CCF 小明放學 小明上學

2022-09-17 02:24:09 字數 3353 閱讀 6011

題目背景

小明是漢東省政法大學附屬中學的一名學生,他每天都要騎自行車往返於家和學校。為了能盡可能充足地睡眠,他希望能夠預計自己上學所需要的時間。他上學需要經過數段道路,相鄰兩段道路之間設有至多一盞紅綠燈。

京州市的紅綠燈是這樣工作的:每盞紅綠燈有紅、黃、綠三盞燈和乙個能夠顯示倒計時的顯示牌。假設紅綠燈被設定為紅燈 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 小明上學

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