【CCF-CSP】201812-2-小明放学100分(含详细注释)

简介: 【CCF-CSP】201812-2-小明放学100分(含详细注释)

代码如下:

#include <iostream>
using namespace std;
int main()
{   //灯顺序为 红、绿、黄 循环
    int red,yellow,green;//红、黄、绿灯的额定时间
    int n;//经过道路/红绿灯总数
    long long SumTime=0;//小学上学所用时间
    cin>>red>>yellow>>green;
    cin>>n;
    for(int i=0;i<n;i++){
        int k,t;
        cin>>k>>t;
        if(k==0){
            SumTime=SumTime+t;
        }
        else if(k==1){//初始为红灯
            int time=SumTime%(red+yellow+green);
            if(time<=t){SumTime=SumTime+t-time;}//此轮回没有走出红灯
            else if(t+green<=time && time<t+green+yellow){SumTime=SumTime+(t+green+yellow-time)+red;}//到达时已变为绿灯变为黄灯
            else if(t+green+yellow<=time && time<t+green+yellow+red){SumTime=SumTime+(t+green+yellow+red-time);}//此轮回出红灯后再次进入红灯
        }
        else if(k==2){//初始为黄灯
            int time=SumTime%(red+yellow+green);
            if(time<t){//没有走出黄灯
                SumTime=SumTime+t-time+red;
            }
            else if(t<=time &&time<t+red ){//到达时为红灯
                SumTime=SumTime+(t+red-time);
            }
            else if(t+red+green<=time && time<t+red+green+yellow){SumTime=SumTime+(t+green+yellow+red-time)+red;}//此轮回中出了黄灯再次进入黄灯
        }
        else if(k==3){//初始为绿灯
            int time=SumTime%(red+yellow+green);
            if(t<time &&time<t+yellow){//到达时为黄灯
                SumTime=SumTime+(t+yellow-time)+red;
            }
            else if(t+yellow<time && time<t+yellow+red){//到达时为红灯
                SumTime=SumTime+(t+yellow+red-time);
            }
            //此轮回第1、2次进入绿灯对SumTime没有影响
        }
    }
    cout<<SumTime<<endl;
    return 0;
}

image.gif

题目如下:

image.gif编辑

目录
相关文章
【CCF-CSP】202009-2风险人群筛查100分(含详细注释)
【CCF-CSP】202009-2风险人群筛查100分(含详细注释)
340 0
【CCF-CSP】201712-1-最小差值100分(含详细注释)
【CCF-CSP】201712-1-最小差值100分(含详细注释)
175 0
【CCF-CSP】202109-1-数组推导100分(含详细注释)
【CCF-CSP】202109-1-数组推导100分(含详细注释)
208 0
|
存储
【CCF-CSP】201712-2游戏100分(含思路解释、详细注释)
【CCF-CSP】201712-2游戏100分(含思路解释、详细注释)
188 0
【CCF-CSP】201709-2-公共钥匙盒100分(含详细注释)
【CCF-CSP】201709-2-公共钥匙盒100分(含详细注释)
263 0
【CCF-CSP】201809-1-卖菜100分(含详细注释)
【CCF-CSP】201809-1-卖菜100分(含详细注释)
109 0
第五十二章 开发自定义标签 - Using csr %CSP.AbstractAtom Write Methods
第五十二章 开发自定义标签 - Using csr %CSP.AbstractAtom Write Methods
78 0
|
JavaScript 编译器 Go
第五十一章 开发自定义标签 - 使用%CSP.Rule方法
第五十一章 开发自定义标签 - 使用%CSP.Rule方法
88 0
|
SQL JavaScript 前端开发
第三十六章 使用 CSP 进行基于标签的开发 - 使用尽可能少的#server和#call调用
第三十六章 使用 CSP 进行基于标签的开发 - 使用尽可能少的#server和#call调用
136 0
|
JavaScript 前端开发 Go
第三十四章 使用 CSP 进行基于标签的开发 - Hyperevent例子
第三十四章 使用 CSP 进行基于标签的开发 - Hyperevent例子
126 0