AcWing 3267. 小明上学

题意:

小明是汉东省政法大学附属中学的一名学生,他每天都要骑自行车往返于家和学校。

为了能尽可能充足地睡眠,他希望能够预计自己上学所需要的时间。

他上学需要经过数段道路,相邻两段道路之间设有至多一盏红绿灯。

京州市的红绿灯是这样工作的:每盏红绿灯有红、黄、绿三盏灯和一个能够显示倒计时的显示牌。

假设红绿灯被设定为红灯\(r\)秒,黄灯 \(y\) 秒,绿灯 \(g\) 秒,那么从 \(0\) 时刻起,\([0,r)\) 秒内亮红灯,车辆不许通过;\([r,r+g)\) 秒内亮绿灯,车辆允许通过;\([r+g,r+g+y)\) 秒内亮黄灯,车辆不许通过,然后依次循环。

倒计时的显示牌上显示的数字 \(l(l>0)\) 是指距离下一次信号灯变化的秒数。

一次上学的路上,小明记录下了经过每段路的时间,和各个红绿灯在小明到达路口时的颜色和倒计时秒数。

希望你帮忙计算此次小明上学所用的时间。

思路:

遇到红灯时累加,遇到黄灯时需要等\(t\)秒黄灯跑过,然后再等\(r\)秒红灯跑过,遇到绿灯时直接通过,直接模拟就好。

Code:

#include<bits/stdc++.h>
#define debug(x) cout<<#x<<" "<<x<<endl
using namespace std;
int r,g,y,n,sum,k,t;
int main(){
    cin>>r>>g>>y;
    cin>>n;
    for(int i=1;i<=n;++i){
        cin>>k>>t;
        if(k==0||k==1){
            sum+=t;
        }
        else if(k==2)sum+=(t+r);
    }
    cout<<sum;
    return 0;
}
posted @ 2021-03-20 22:43  Qquun  阅读(53)  评论(0)    收藏  举报