ccf2018 12 1 小明上學演算法

2021-10-23 05:49:28 字數 1426 閱讀 1185

問題描述:

小明是漢東省政法大學附屬中學的一名學生,他每天都要騎自行車往返於家和學校。為了能盡可能充足地睡眠,

他希望能夠預計自己上學所需要的時間。他上學需要經過數段道路,相鄰兩段道路之間設有至多一盞紅綠燈。

京州市的紅綠燈是這樣工作的:每盞紅綠燈有紅、黃、綠三盞燈和乙個能夠顯示倒計時的顯示牌。

假設紅綠燈被設定為紅燈 r 秒,黃燈 y 秒,綠燈 g 秒,那麼從 0 時刻起,[0,r) 秒內亮紅燈,車輛不許通過;

[r, r+g) 秒內亮綠燈,車輛允許通過;[r+g, r+g+y) 秒內亮黃燈,車輛不許通過,然後依次迴圈。

倒計時的顯示牌上顯示的數字 l(l > 0)是指距離下一次訊號燈變化的秒數。

一次上學的路上,小明記錄下了經過每段路的時間,和各個紅綠燈在小明到達路口時的顏色和倒計時秒數。

希望你幫忙計算此次小明上學所用的時間。

輸入格式:

輸入的第一行包含空格分隔的三個正整數 r、y、g,表示紅綠燈的設定。這三個數均不超過 1e6(10的6次方)。

輸入的第二行包含乙個正整數 n(n ≤ 100),表示小明總共經過的道路段數和看到的紅綠燈數目。

接下來的 n 行,每行包含空格分隔的兩個整數 k、t。k=0 表示經過了一段道路,耗時 t 秒,

此處 t 不超過 1e6;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 中將出現各種可能的情況。

#include

intmain

(void

)else

if(k==1)

else

if(k==2)

//綠燈不需要等待

}printf

("%d"

,count)

;return0;

}

CCF 201812 1 小明上學

題目大意 小明上學,遇到路口通過,會有一段時間 t 秒 遇到交通燈,當時的交通燈剩 t 秒,紅燈黃燈停,綠燈行。最後要我們算小明上學一共花了多少時間。思路 小明走一步算一步,遇到路口 0 總時間加 t,遇到紅燈 1 總時間加t,遇到黃燈 2 總時間加 t 再加 紅燈時長 r 遇到綠燈 3 通過,不加...

CCF 201812 1 小明上學

時間限制 1.0s 記憶體限制 512.0mb 小明是漢東省政法大學附屬中學的一名學生,他每天都要騎自行車往返於家和學校。為了能盡可能充足地睡眠,他希望能夠預計自己上學所需要的時間。他上學需要經過數段道路,相鄰兩段道路之間設有至多一盞紅綠燈。京州市的紅綠燈是這樣工作的 每盞紅綠燈有紅 黃 綠三盞燈和...

CCF201812 1 小明上學

試題編號 201812 1 試題名稱 小明上學 時間限制 1.0s 記憶體限制 512.0mb 問題描述 題目背景 小明是漢東省政法大學附屬中學的一名學生,他每天都要騎自行車往返於家和學校。為了能盡可能充足地睡眠,他希望能夠預計自己上學所需要的時間。他上學需要經過數段道路,相鄰兩段道路之間設有至多一...