問題描述
- 試題編號: 201812-1
- 試題名稱: 小明上學
- 時間限制: 1.0s
- 內(nèi)存限制: 512.0MB
問題描述:
- 題目背景
小明是漢東省政法大學附屬中學的一名學生颁督,他每天都要騎自行車往返于家和學校脸秽。為了能盡可能充足地睡眠冠句,他希望能夠預(yù)計自己上學所需要的時間。他上學需要經(jīng)過數(shù)段道路掌栅,相鄰兩段道路之間設(shè)有至多一盞紅綠燈鉴未。
京州市的紅綠燈是這樣工作的:每盞紅綠燈有紅舶吗、黃、綠三盞燈和一個能夠顯示倒計時的顯示牌歹颓。假設(shè)紅綠燈被設(shè)定為紅燈 r 秒坯屿,黃燈 y 秒,綠燈 g 秒巍扛,那么從 0 時刻起领跛,[0,r) 秒內(nèi)亮紅燈,車輛不許通過撤奸;[r, r+g) 秒內(nèi)亮綠燈吠昭,車輛允許通過;[r+g, r+g+y) 秒內(nèi)亮黃燈胧瓜,車輛不許通過矢棚,然后依次循環(huán)。倒計時的顯示牌上顯示的數(shù)字 l(l > 0)是指距離下一次信號燈變化的秒數(shù)府喳。 - 問題描述
一次上學的路上蒲肋,小明記錄下了經(jīng)過每段路的時間,和各個紅綠燈在小明到達路口時的顏色和倒計時秒數(shù)钝满。希望你幫忙計算此次小明上學所用的時間兜粘。
輸入格式
輸入的第一行包含空格分隔的三個正整數(shù) r、y弯蚜、g孔轴,表示紅綠燈的設(shè)置。這三個數(shù)均不超過 106熟吏。
輸入的第二行包含一個正整數(shù) n(n ≤ 100)距糖,表示小明總共經(jīng)過的道路段數(shù)和看到的紅綠燈數(shù)目。
接下來的 n 行牵寺,每行包含空格分隔的兩個整數(shù) k悍引、t。k=0 表示經(jīng)過了一段道路帽氓,耗時 t 秒趣斤,此處 t 不超過 106;k=1黎休、2浓领、3 時玉凯,分別表示看到了一個紅燈、黃燈联贩、綠燈漫仆,且倒計時顯示牌上顯示的數(shù)字是 t,此處 t 分別不會超過 r泪幌、y盲厌、g。 - 輸出格式
輸出一個數(shù)字祸泪,表示此次小明上學所用的時間吗浩。 - 樣例輸入
30 3 30
8
0 10
1 5
0 11
2 2
0 6
0 3
3 10
0 3 - 樣例輸出
70 - 樣例說明
小明先經(jīng)過第一段道路,用時 10 秒没隘,然后等待 5 秒的紅燈懂扼,再經(jīng)過第二段道路,用時 11 秒右蒲,然后等待 2 秒的黃燈和 30 秒的紅燈阀湿,再經(jīng)過第三段、第四段道路品嚣,分別用時6炕倘、3秒,然后通過綠燈翰撑,再經(jīng)過最后一段道路罩旋,用時 3 秒。共計 10 + 5 + 11 + 2 + 30 + 6 + 3 + 3=70 秒眶诈。 - 評測用例規(guī)模與約定
測試點 1, 2 中不存在任何信號燈涨醋。
測試點 3, 4 中所有的信號燈在被觀察時均為綠燈。
測試點 5, 6 中所有的信號燈在被觀察時均為紅燈逝撬。
測試點 7, 8 中所有的信號燈在被觀察時均為黃燈浴骂。
測試點 9, 10 中將出現(xiàn)各種可能的情況。
#include<iostream>
using namespace std;
int main(){
int r,y,g,n,k,t,s=0;
long long sum=0;
cin>>r>>y>>g;
cin>>n;
while(n--){
cin>>k>>t;
if(k==0){
sum+=t;
}
if(k==1){
if(s<=t||s-t>r+g+y){
sum=sum+(t-s);
}else if(s<=g+t){
sum+=0;
}else if(s<=g+t+y){
sum=sum+r+y-(s-t-g);
}else{
sum=sum+r-(s-t-g-y);
}
}
if(k==2){
if(s<=t||s-t>r+g+y){
sum=sum+(t-s)+r;
}else if(s<=t+r){
sum=sum+r-(s-t);
}else if(s<=t+r+g){
sum+=0;
}else{
sum=sum+y+r-(s-t-g-r);
}
}
if(k==3){
if(s<=t||s-t>r+g+y){
sum=sum;
}else if(s<=t+y){
sum=sum+r+y-(s-t);
}else if(s<=t+y+r){
sum=sum+r-(s-t-y);
}else{
;
}
}
s=sum%(r+y+g);
}
cout<<sum;
return 0;
}
今天CCF官網(wǎng)出問題了宪潮,明天要是恢復的話就補完這個博客溯警。
第22天打卡,時間管理王者狡相,fighting梯轻。