題目背景
小明是漢東省政法大學附屬中學的一名學生,他每天都要騎自行車往返於家和學校。為了能盡可能充足地睡眠,他希望能夠預計自己上學所需要的時間。他上學需要經過數段道路,相鄰兩段道路之間設有至多一盞紅綠燈。
京州市的紅綠燈是這樣工作的:每盞紅綠燈有紅、黃、綠三盞燈和乙個能夠顯示倒計時的顯示牌。假設紅綠燈被設定為紅燈 r 秒,黃燈 y 秒,綠燈 g 秒,那麼從 0 時刻起,[0,r) 秒內亮紅燈,車輛不許通過;[r, r+g) 秒內亮綠燈,車輛允許通過;[r+g, r+g+y) 秒內亮黃燈,車輛不許通過,然後依次迴圈。倒計時的顯示牌上顯示的數字 l(l > 0)是指距離下一次訊號燈變化的秒數。
問題描述
一次上學的路上,小明記錄下了經過每段路的時間,和各個紅綠燈在小明到達路口時的顏色和倒計時秒數。希望你幫忙計算此次小明上學所用的時間。
輸入格式
輸入的第一行包含空格分隔的三個正整數 r、y、g,表示紅綠燈的設定。這三個數均不超過 106。
輸入的第二行包含乙個正整數 n(n ≤ 100),表示小明總共經過的道路段數和看到的紅綠燈數目。
接下來的 n 行,每行包含空格分隔的兩個整數 k、t。k=0 表示經過了一段道路,耗時 t 秒,此處 t 不超過 106;k=1、2、3 時,分別表示看到了乙個紅燈、黃燈、綠燈,且倒計時顯示牌上顯示的數字是 t,此處 t 分別不會超過 r、y、g。
輸出格式
輸出乙個數字,表示此次小明上學所用的時間。
樣例輸入
30 3 30
80 10
1 50 11
2 20 6
0 33 10
0 3樣例輸出
70樣例說明
小明先經過第一段道路,用時 10 秒,然後等待 5 秒的紅燈,再經過第二段道路,用時 11 秒,然後等待 2 秒的黃燈和 30 秒的紅燈,再經過第三段、第四段道路,分別用時6、3秒,然後通過綠燈,再經過最後一段道路,用時 3 秒。共計 10 + 5 + 11 + 2 + 30 + 6 + 3 + 3=70 秒。
評測用例規模與約定
測試點 1, 2 中不存在任何訊號燈。
測試點 3, 4 中所有的訊號燈在被觀察時均為綠燈。
測試點 5, 6 中所有的訊號燈在被觀察時均為紅燈。
測試點 7, 8 中所有的訊號燈在被觀察時均為黃燈。
測試點 9, 10 中將出現各種可能的情況。
題目背景
漢東省政法大學附屬中學所在的光明區最近實施了名為「智慧型光明」的智慧型城市專案。具體到交通領域,通過「智慧型光明」終端,可以看到光明區所有紅綠燈此時此刻的狀態。小明的學校也安裝了「智慧型光明」終端,小明想利用這個終端給出的資訊,估算自己放學回到家的時間。
問題描述
一次放學的時候,小明已經規劃好了自己回家的路線,並且能夠**經過各個路段的時間。同時,小明通過學校裡安裝的「智慧型光明」終端,看到了出發時刻路上經過的所有紅綠燈的指示狀態。請幫忙計算小明此次回家所需要的時間。
輸入格式
輸入的第一行包含空格分隔的三個正整數 r、y、g,表示紅綠燈的設定。這三個數均不超過 106。
輸入的第二行包含乙個正整數 n,表示小明總共經過的道路段數和路過的紅綠燈數目。
接下來的 n 行,每行包含空格分隔的兩個整數 k、t。k=0 表示經過了一段道路,將會耗時 t 秒,此處 t 不超過 106;k=1、2、3 時,分別表示出發時刻,此處的紅綠燈狀態是紅燈、黃燈、綠燈,且倒計時顯示牌上顯示的數字是 t,此處 t 分別不會超過 r、y、g。
輸出格式
輸出乙個數字,表示此次小明放學回家所用的時間。
樣例輸入
30 3 30
80 10
1 50 11
2 20 6
0 33 10
0 3樣例輸出
46樣例說明
小明先經過第一段路,用時 10 秒。第一盞紅綠燈出發時是紅燈,還剩 5 秒;小明到達路口時,這個紅綠燈已經變為綠燈,不用等待直接通過。接下來經過第二段路,用時 11 秒。第二盞紅綠燈出發時是黃燈,還剩兩秒;小明到達路口時,這個紅綠燈已經變為紅燈,還剩 11 秒。接下來經過第
三、第四段路,用時 9 秒。第三盞紅綠燈出發時是綠燈,還剩 10 秒;小明到達路口時,這個紅綠燈已經變為紅燈,還剩兩秒。接下來經過最後一段路,用時 3 秒。共計 10+11+11+9+2+3 = 46 秒。
評測用例規模與約定
有些測試點具有特殊的性質:
* 前 2 個測試點中不存在任何訊號燈。
測試點的輸入資料規模:
* 前 6 個測試點保證 n ≤ 103。
* 所有測試點保證 n ≤ 105。
兩道題差不多,上學紅綠燈不變化,就是簡單的判斷加減輸出,放學紅綠燈有變化,其實也是在上學的基礎上做一些處理即可,我們已經知道的了如果到達某個紅綠燈時該怎麼判斷和處理,那麼放學就利用不斷變化的ans來判斷距離出發時的時間間隔,從而計算出到達時的真實情況,然後又變回上學時的簡單情況了。
具體處理方法:若倒計時間大於經過時間,倒計時間消去經過時間,並以當前訊號燈判斷即可,否則,經過時間減去倒計時間,訊號燈進入下乙個狀態,k變化,然後為了簡化計算,對紅綠燈乙個輪迴的總時間進行取模,這樣要計算的時間段較少,然後就可以根據當前時間直接一段一段的減去取模後的經過時間,得到最後的實際時間。
有些比較麻煩的地方就是,題目輸入順序是 紅 黃 綠 ,並且紅綠燈的變化順序是 紅 綠 黃,而k的1 2 3所代表的順序又是 紅 黃 綠。
然後,上學不需要用long long ,放學是必須用long long的
**如下:
#include
#define ll long long
const
int maxn=
1e5+7;
using namespace std;
intchange
(int k)
intmain()
t=a[k]
-tmp;
}else tmp=t-ans;
}else ans+
=t;if
(k==
1)ans+
=t;if
(k==
2)ans+
=t+a[1]
;// printf("====%d\n",ans);
}printf
("%lld\n"
,ans)
;}
CCF 2018 12 小明上學與小明放學問題
題目背景 小明是漢東省政法大學附屬中學的一名學生,他每天都要騎自行車往返於家和學校。為了能盡可能充足地睡眠,他希望能夠預計自己上學所需要的時間。他上學需要經過數段道路,相鄰兩段道路之間設有至多一盞紅綠燈。京州市的紅綠燈是這樣工作的 每盞紅綠燈有紅 黃 綠三盞燈和乙個能夠顯示倒計時的顯示牌。假設紅綠燈...
CCF 小明上學
試題編號 201812 1 試題名稱 小明上學 時間限制 1.0s 記憶體限制 512.0mb 問題描述 題目背景 小明是漢東省政法大學附屬中學的一名學生,他每天都要騎自行車往返於家和學校。為了能盡可能充足地睡眠,他希望能夠預計自己上學所需要的時間。他上學需要經過數段道路,相鄰兩段道路之間設有至多一...
CCF 小明上學
題目背景 小明是漢東省政法大學附屬中學的一名學生,他每天都要騎自行車往返於家和學校。為了能盡可能充足地睡眠,他希望能夠預計自己上學所需要的時間。他上學需要經過數段道路,相鄰兩段道路之間設有至多一盞紅綠燈。京州市的紅綠燈是這樣工作的 每盞紅綠燈有紅 黃 綠三盞燈和乙個能夠顯示倒計時的顯示牌。假設紅綠燈...