CCF 201812 2 小明放學

2021-09-08 20:09:40 字數 2351 閱讀 9533

題目大意:

這題和第一題的區別在於,小明事先得知路況(路口通過時間和交通燈資料),走之前**估算走多少時間,不再是第一題那樣走多少記多少。

思路:

由於沒有親自去走,所以需要模擬人去走,得到走的總時間,遇到路口就加時間,遇到交通燈的時候,通過總時間和交通燈在出發時的情況,推算出現在交通燈情況,用現在的交通燈情況就可以像第一題那樣加時間。

細節:

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 問題描述 題目背景 漢東省政法大學附屬中學所在的光明區最近實施了名為 智慧型光明 的智慧型城市專案。具體到交通領域,通過 智慧型光明 終端,可以看到光明區所有紅綠燈此時此刻的狀態。小明的學校也安裝了 智慧...