題目大意:
這題和第一題的區別在於,小明事先得知路況(路口通過時間和交通燈資料),走之前**估算走多少時間,不再是第一題那樣走多少記多少。
思路:
由於沒有親自去走,所以需要模擬人去走,得到走的總時間,遇到路口就加時間,遇到交通燈的時候,通過總時間和交通燈在出發時的情況,推算出現在交通燈情況,用現在的交通燈情況就可以像第一題那樣加時間。
細節:
1.推算時注意題目交通燈的標號(1-紅,2-黃,3-綠),然後紅綠燈執行順序是((0)紅–>(1)綠–>(2)黃),到時候進行推算的時候要進行下標與標號的轉換,把123一一對應成012。下標往前推進的時候,通過模運算保證下標一直是0,1,2。
2.不要乙個個燈去推(要不然就超時了,嗚嗚嗚~~這次考試的時候就是這樣,最後才70分),因為紅綠燈是週期執行的,總時間可以減去前面的週期時間,剩下最後乙個週期時間,再在這個週期時間內推算交通燈的情況
python**:思路1
def comput(light, time, total, r, y, g):
# 紅-->綠-->黃
lights = [r, g, y]
# 轉換下標
# 123ryg-->012rgy
if light == 1:
light = 0
elif light == 3:
light = 1
# 先減去第乙個燈的剩餘時間
total -= time
# 燈變成下乙個燈
light = (light + 1) % 3
if total < 0:
return (light - 1) % 3, -total
# 減去前面重複的週期
total -= total // (r + y + g) * (r + y + g)
while total >= 0:
total -= lights[light]
light = (light + 1) % 3
return (light - 1) % 3, -total
# 主邏輯
r, y, g = map(int, input().split())
n = int(input())
total = 0
for i in range(n):
k, t = map(int, input().split())
# 通過路口
if k == 0:
total += t
# 遇到交通燈
else:
# 推算出當前交通燈的情況
k, t = comput(k, t, total, r, y, g)
# 紅燈
if k == 0:
total += t
# 黃燈
elif k == 2:
total += t + r
print(total)
思路2:用求模的思想,算出過了total秒後的燈的情況
def transform(r, y, g, k, t, total):
# 紅綠燈順序 紅-->綠-->黃
if k == 1:
t = r - t
elif k == 2:
t = (r + g + y) - t
elif k == 3:
t = (r + g) - t
mod = (total + t) % (r + y + g)
if 0 <= mod < r:
return 1, r - mod
elif r <= mod < r + g:
return 3, r + g - mod
elif r + g <= mod < r + g + y:
return 2, r + g + y - mod
r, y, g = map(int, input().split())
n = int(input())
total = 0
for i in range(n):
k, t = map(int, input().split())
if k == 0:
total += t
else:
nk, nt = transform(r, y, g, k, t, total)
if nk == 1:
total += nt
elif nk == 2:
total += nt + r
print(total)
CCF 201812 2小明放學
試題編號 201812 2 試題名稱 小明放學 時間限制 1.0s 記憶體限制 512.0mb 問題描述 題目背景 漢東省政法大學附屬中學所在的光明區最近實施了名為 智慧型光明 的智慧型城市專案。具體到交通領域,通過 智慧型光明 終端,可以看到光明區所有紅綠燈此時此刻的狀態。小明的學校也安裝了 智慧...
CCF 201812 2小明放學
題目背景 漢東省政法大學附屬中學所在的光明區最近實施了名為 智慧型光明 的智慧型城市專案。具體到交通領域,通過 智慧型光明 終端,可以看到光明區所有紅綠燈此時此刻的狀態。小明的學校也安裝了 智慧型光明 終端,小明想利用這個終端給出的資訊,估算自己放學回到家的時間。問題描述 一次放學的時候,小明已經規...
ccf201812 2小明放學
試題編號 201812 2 試題名稱 小明放學 時間限制 1.0s 記憶體限制 512.0mb 問題描述 題目背景 漢東省政法大學附屬中學所在的光明區最近實施了名為 智慧型光明 的智慧型城市專案。具體到交通領域,通過 智慧型光明 終端,可以看到光明區所有紅綠燈此時此刻的狀態。小明的學校也安裝了 智慧...