这个怎么做啊?我题读懂了但没有什么思路

img


N,M = map(int,input().split())
Alist = list(map(int,input().split()))
R = list(map(int,input().split())) # 红灯的时间
G = list(map(int,input().split())) # 绿灯时间
Alist.insert(0,M)

timeList = []
# 计算到了路口之后用的总时间
s = 0 # 路口红绿灯之和
timeUsedTotal = 0 # 到达每个路口花费的总时间
timeUsed = Alist[0]
for i in range(N):
    timeUsedTotal = timeUsedTotal + timeUsed
    # 判断,当前是绿灯还是红灯
    # 如果是绿灯直接通过
    s = R[i] + G[i]
    timeUsed = timeUsedTotal % s
    if G[i] < timeUsed:
        timeUsedTotal = timeUsedTotal + (s - timeUsed)
    if i != N-1:
        timeUsed = Alist[i+1] # 统计当前路口到下一个路口花费的时间
    timeList.append(timeUsedTotal)
    
for elem in timeList:
    print(elem)

结果:

img

如果觉得答案对你有帮助,请点击下采纳,谢谢~

N, M =5,3 
A = [2, 4, 3, 2]
R = [3, 4, 3, 4, 3]
G = [2, 3, 2, 3, 1]

X = 0
A.insert(0, M)

for i,v in enumerate(R):
    X = X +A[i]    
    tmpX = X % (v + G[i])
    if  tmpX<= G[i]:
        print(f'等第{i+1}个红绿灯:0')
    elif tmpX > G[i] <= v + G[i]:
        print(f"等第{i+1}个红绿灯:{v+G[i]-tmpX}")
        X += v+G[i]-tmpX
    print(f"刚过红绿灯总时间:{X}")