網(wǎng)站建設(shè)管理視頻超級seo外鏈
題目一
試題編號: 201812-1
試題名稱: 小明上學(xué)
時間限制: 1.0s
內(nèi)存限制: 512.0MB
問題描述:
題目背景
小明是漢東省政法大學(xué)附屬中學(xué)的一名學(xué)生,他每天都要騎自行車往返于家和學(xué)校。為了能盡可能充足地睡眠,他希望能夠預(yù)計自己上學(xué)所需要的時間。他上學(xué)需要經(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ù)。
問題描述
一次上學(xué)的路上,小明記錄下了經(jīng)過每段路的時間,和各個紅綠燈在小明到達(dá)路口時的顏色和倒計時秒數(shù)。希望你幫忙計算此次小明上學(xué)所用的時間。
輸入格式
輸入的第一行包含空格分隔的三個正整數(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ù)字,表示此次小明上學(xué)所用的時間。
樣例輸入
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ī)模與約定
測試點(diǎn) 1, 2 中不存在任何信號燈。
測試點(diǎn) 3, 4 中所有的信號燈在被觀察時均為綠燈。
測試點(diǎn) 5, 6 中所有的信號燈在被觀察時均為紅燈。
測試點(diǎn) 7, 8 中所有的信號燈在被觀察時均為黃燈。
測試點(diǎn) 9, 10 中將出現(xiàn)各種可能的情況。
題目分析(個人理解)
- 題目很長專門來嚇唬人的,還是先看輸入,第一行輸入紅黃綠燈的時長,第二行輸入經(jīng)過幾個路口
,接下來的 n 行,每行包含空格分隔的兩個整數(shù) k、t。k=0 表示經(jīng)過了一段道路,耗時 t 秒,此處 t 不超過 106;k=1、2、3 時,分別表示看到了一個紅燈、黃燈、綠燈,且倒計時顯示牌上顯示的數(shù)字是 t,此處 t 分別不會超過 r、y、g。 - 還是非常常規(guī),直接r,y,g=map(int,input().split())
n=int(input()) - 看輸出要求輸出總共花了多長時間,那就用time去做計數(shù),多分支語句就可以解決,只需要注意的是黃燈過后要等滿一個紅燈的時間才能通過。
- 直接上代碼!!!
r,y,g=map(int,input().split())
n=int(input())
time=0
for i in range(n):k,t=map(int,input().split())if k==0:time+=telif k==1:time+=telif k==2:time+=t+relif k==3:time+=0
print(time)
題目二
試題編號: 201812-2
試題名稱: 小明放學(xué)
時間限制: 1.0s
內(nèi)存限制: 512.0MB
問題描述:
題目背景
漢東省政法大學(xué)附屬中學(xué)所在的光明區(qū)最近實施了名為“智慧光明”的智慧城市項目。具體到交通領(lǐng)域,通過“智慧光明”終端,可以看到光明區(qū)所有紅綠燈此時此刻的狀態(tài)。小明的學(xué)校也安裝了“智慧光明”終端,小明想利用這個終端給出的信息,估算自己放學(xué)回到家的時間。
問題描述
一次放學(xué)的時候,小明已經(jīng)規(guī)劃好了自己回家的路線,并且能夠預(yù)測經(jīng)過各個路段的時間。同時,小明通過學(xué)校里安裝的“智慧光明”終端,看到了出發(fā)時刻路上經(jīng)過的所有紅綠燈的指示狀態(tài)。請幫忙計算小明此次回家所需要的時間。
輸入格式
輸入的第一行包含空格分隔的三個正整數(shù) r、y、g,表示紅綠燈的設(shè)置。這三個數(shù)均不超過 106。
輸入的第二行包含一個正整數(shù) n,表示小明總共經(jīng)過的道路段數(shù)和路過的紅綠燈數(shù)目。
接下來的 n 行,每行包含空格分隔的兩個整數(shù) k、t。k=0 表示經(jīng)過了一段道路,將會耗時 t 秒,此處 t 不超過 106;k=1、2、3 時,分別表示出發(fā)時刻,此處的紅綠燈狀態(tài)是紅燈、黃燈、綠燈,且倒計時顯示牌上顯示的數(shù)字是 t,此處 t 分別不會超過 r、y、g。
輸出格式
輸出一個數(shù)字,表示此次小明放學(xué)回家所用的時間。
樣例輸入
30 3 30
8
0 10
1 5
0 11
2 2
0 6
0 3
3 10
0 3
樣例輸出
46
樣例說明
小明先經(jīng)過第一段路,用時 10 秒。第一盞紅綠燈出發(fā)時是紅燈,還剩 5 秒;小明到達(dá)路口時,這個紅綠燈已經(jīng)變?yōu)榫G燈,不用等待直接通過。接下來經(jīng)過第二段路,用時 11 秒。第二盞紅綠燈出發(fā)時是黃燈,還剩兩秒;小明到達(dá)路口時,這個紅綠燈已經(jīng)變?yōu)榧t燈,還剩 11 秒。接下來經(jīng)過第三、第四段路,用時 9 秒。第三盞紅綠燈出發(fā)時是綠燈,還剩 10 秒;小明到達(dá)路口時,這個紅綠燈已經(jīng)變?yōu)榧t燈,還剩兩秒。接下來經(jīng)過最后一段路,用時 3 秒。共計 10+11+11+9+2+3 = 46 秒。
評測用例規(guī)模與約定
有些測試點(diǎn)具有特殊的性質(zhì):
* 前 2 個測試點(diǎn)中不存在任何信號燈。
測試點(diǎn)的輸入數(shù)據(jù)規(guī)模:
* 前 6 個測試點(diǎn)保證 n ≤ 103。
* 所有測試點(diǎn)保證 n ≤ 105。
題目分析(個人理解)
- 注意這里和第一題不同的是,后面輸入的是離開時的每一個路口的紅綠黃燈的狀態(tài),因此要注意周期性問題,即要判斷到第n個路口的時候,每個路口的狀態(tài),燈是紅-綠-黃-紅的順序變換的,設(shè)置周期為T=r+g+y
- 那么到路口的狀態(tài)是yu=time%T,k=0表示通過路口的時間,k=1表示出發(fā)時路口的燈是紅色,那就要推算小明到該路口時燈是什么狀態(tài),如果yu小于t那就還是紅燈的情況time+=t-yu (注意,這種情況是還沒開始第一輪的情況即小明到該路口時是第一次紅燈出現(xiàn))如果,yu<=t+g也就是在綠燈的范圍內(nèi),time+=0 如果yu<=t+g+y小明到時遇到的是黃燈,他要先等完黃燈再等完紅燈才能走,所以 time+=(t+g+y)-yu+r,注意還有一種情況是小明到該路口時是紅燈,但是顯示的時間>t 這種情況很容易遺忘,此時顯示的時間是t+T-yu 等完這個時間就是綠燈,也就是t+g+y<yu<r+g+y的情況。
- 相同道理推斷出出發(fā)時是黃色時要注意,小明到該路口是黃燈但是顯示時間>t,之后還要等滿一個紅燈的時間,到達(dá)時顯示時間<t或是紅燈或綠燈的情況參考我寫的第二點(diǎn)同理可得結(jié)論。出發(fā)時是綠燈時,到達(dá)時也是綠燈時只需time+=0即可。到達(dá)時顯示時間<t或是紅燈或黃燈的情況參考我寫的第二點(diǎn)同理可得結(jié)論。
- 最后輸出time即可!
- 上代碼!!!
r,y,g=input().split()
r,y,g=int(r),int(y),int(g)
n=int(input())
time=0#目前所用時間
T=r+y+g#燈紅綠黃循環(huán)一個周期的時間#紅、綠、黃是路燈循環(huán)的過程
for i in range(n):k,t=input().split()k,t=int(k),int(t)yu=time%T#初始情況t過yu秒后才是到達(dá)路口的情況if k==0:#經(jīng)過道路time+=telif k==1:#初始是紅燈if yu<=t:#紅 還沒到綠燈time+=t-yuelif yu<=t+g:#綠 還沒到黃燈time+=0elif yu<=t+g+y:#黃 還沒到紅燈time+=(t+g+y)-yu+relse:#紅 紅-綠-黃-紅time+=t+T-yu#T-yu是牌子距離顯示t還需要的時間#t+T-yu是顯示時間elif k==2:if yu<=t:#黃time+=t-yu+relif yu<=t+r:#紅time+=t+r-yuelif yu<=t+r+g:#綠time+=0else:#黃time+=t+T-yu+relif k==3:if yu<=t:#綠time+=0elif yu<=t+y:#黃time+=t+y-yu+relif yu<=t+y+r:#紅time+=(t+y+r)-yuelse:#綠time+=0
print(time)
總結(jié)
不要為了學(xué)習(xí)而學(xué)習(xí),學(xué)習(xí)只是一種提升自己的方式?!猻hangzhaoyun2023.10.2