題目背景
漢東省政法大學附屬中學所在的光明區最近實施了名為「智慧型光明」的智慧型城市專案。具體到交通領域,通過「智慧型光明」終端,可以看到光明區所有紅綠燈此時此刻的狀態。小明的學校也安裝了「智慧型光明」終端,小明想利用這個終端給出的資訊,估算自己放學回到家的時間。
問題描述
一次放學的時候,小明已經規劃好了自己回家的路線,並且能夠**經過各個路段的時間。同時,小明通過學校裡安裝的「智慧型光明」終端,看到了出發時刻路上經過的所有紅綠燈的指示狀態。請幫忙計算小明此次回家所需要的時間。
輸入格式
輸入的第一行包含空格分隔的三個正整數 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
8 0 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。
已知初始時各個紅綠燈的狀態和每個狀態持續的時間,那麼我們肯定要計算小明到達那個紅綠燈時紅綠燈的狀態。紅綠燈的狀態如何計算呢?分別考慮各種情形就好。以初始時紅燈為例:
初始時,為紅燈
則燈的閃爍順序為【–>綠–>黃–>紅】
若到達此訊號燈的時間小於初始時紅燈剩餘的時間,則說明達到此處是還是紅燈,要等待資料所給的剩餘紅燈時間才能等到綠燈,然後通過。
若到達此訊號燈的時間大於初始時紅燈剩餘的時間,則說明訊號燈變為了綠燈 或 黃燈 或 紅燈,注意此時訊號燈可能已經變化了好幾輪。如果是綠燈,就直接通過;如果是黃燈,則要等黃燈剩餘時間+整個紅燈時間;如果是紅燈,則要等紅燈剩餘時間。
/*
2019/12/27
csp試題2:小明放學
*/#include
using
namespace std;
intmain()
if(state ==1)
else}}
if(state ==2)
else
else
if(temp >= r+g)}}
if(state ==3)
else}}
}//輸出結果
cout
}
注意總時間的資料型別,是long long。
因為n可能會很大,所以最好不要將所有資料存到矩陣中在進行計算。
CSP小明放學 好題)
小明放學 時間限制 1.0s 記憶體限制 512.0mb 問題描述 題目背景 漢東省政法大學附屬中學所在的光明區最近實施了名為 智慧型光明 的智慧型城市專案。具體到交通領域,通過 智慧型光明 終端,可以看到光明區所有紅綠燈此時此刻的狀態。小明的學校也安裝了 智慧型光明 終端,小明想利用這個終端給出的...
CSP 201812 2 小明放學
問題描述 解題思路 由於資料的量較大,需要使用long long來儲存結果,否則會爆掉結果只能得到一部分的分 可以模擬時鐘,將紅綠燈的變換當成時鐘的運轉,這樣用模運算來斷定紅綠燈在到達時處於什麼顏色 注意看前一題上學,我做的時候沒看,導致以為黃燈能直接走,卡了很久 實現 1 include2 3us...
CSP 201812 2 小明放學 Python
試題編號 201812 2 試題名稱 小明放學 時間限制 1.0s 記憶體限制 512.0mb 問題描述 題目背景 漢東省政法大學附屬中學所在的光明區最近實施了名為 智慧型光明 的智慧型城市專案。具體到交通領域,通過 智慧型光明 終端,可以看到光明區所有紅綠燈此時此刻的狀態。小明的學校也安裝了 智慧...