题解:P14505 [NCPC 2025] km/h

· · 题解

题目传送门

解析

题目想让我们根据输入推测题目中的“国家限速”。因为国家限速严格大于任意一个限速标志的限速,还是个整十数,所以我们在当前的输入中,找到比它大的最小整十数,与我们之前记录过的国家速度取较大值,就是我们“根据目前为止看到的标志”所能判断出的最保险的国家限速。

题目要求输出当前能够合法行驶的最高车速,对于每个限速标志输入,直接输出它的限速即可。输入解除限速标志时,因为它“会取消之前的限制并恢复国家限速”,所以此时要输出我们已经计算的国家限速。注意解除限速标志不是只解除上一个限速标志,而是直接恢复国家限速

Code

#include <bits/stdc++.h>
using namespace std;
int n,maxx;
string l;
int main(){
    cin >> n;
    while(n--){
        cin >> l;
        if(l[0]=='/'){
            cout << maxx << "\n";//国家限速
        }else{
            int len=l.size(),flag=0;
            for(int i=len-1,j=1;i>=0;i--,j*=10) flag+=(l[i]-'0')*j;//将字符串转化为数字
            cout << flag << "\n";
            maxx=max(maxx,flag/10*10+10/*除以10取其十位,乘10后加十就是大于这个数的最小整十数*/);
        }
    }
    return 0;
}