如题:
解题思路及代码:
用一个数res记录总共花了多少时间,用sum1记录三个灯过一轮的时间,则每到一个红绿灯时的res%sum1即是我们需要考虑的过了多少时间。
若是此时是红灯,则需要加上剩余时间:若此时是绿灯,则直接通过;若此时是黄灯,则需要加上黄灯剩余时间+红灯的时间。(需要注意的是红绿灯的顺序为红、绿、黄)
代码:
x,y,z=map(int,input().split())
sum1=x+y+z
res=0
m=int(input())
for i in range(m):
k,t=map(int,input().split())
timetrue=res%sum1
if k==0:
res+=t
if k==1:
if timetrue<=t:
res+=t-timetrue
elif timetrue<=t+z:
continue
else:
res+=sum1-timetrue+t
if k==2:
if timetrue<t:
res+=t-timetrue+x
elif timetrue<=t+x:
res+=x-timetrue+t
elif timetrue<=t+x+z:
continue
else:
res+=sum1-timetrue+t+x
if k==3:
if timetrue<t:
continue
elif timetrue<=t+y:
res+=y-(timetrue-t)+x
elif timetrue<=t+y+x:
res+=x-(timetrue-t-y)
else:
continue
print(res)