我觉得这道题其实很好理解,假如给的温度是15度,数据是两个up,300个down,如果你单纯的
if(order == "DOWN")
                temper -= 0.1;
            else
                temper += 0.1;
这样temper肯定会小于0,那应该怎么办呢?————只要在最后一个up的时候把temper改成30就可以了,因为题目说了一定有解,所以不可能出现301个down
那么,接下来的代码理解起来就很简单了
#include <iostream>
#include <string>
using namespace std;
int main(){
    double temper;int __;string order;
    cin >> temper;cin >> __;cin >> order;
    for (int _ = 0; _ < __; _++){
        string next_order;
        if (cin >> next_order){
            if (next_order == order){
                if(order == "DOWN")
                    temper -= 0.1;
                else
                    temper += 0.1;
            }
            else{
                if(next_order == "DOWN")
                    temper = 30.0;
                else
                    temper = 0.0;
            }
            order = next_order;
        }
        else{
            if(order == "DOWN")
                temper -= 0.1;
            else
                temper += 0.1;
        }
        printf("%.1lf\n",temper);
    }
}
PS:涉及到浮点数输出的时候cout是真滴麻烦,这题如果用cout输出长这个样子cout << fixed << setprecision(1) << temper << endl;
 
         
         
         
         
        
极限操作一下就可以啦