#23936: python 解題前想法


asnewchien@gmail.com (david)

學校 : 南投縣立旭光高級中學
編號 : 68108
來源 : [114.42.176.221]
最後登入時間 :
2025-10-04 22:52:03

先用 accumulate 累積,

再用 bisect 去追每個值。

#23937: Re:python 解題前想法


asnewchien@gmail.com (david)

學校 : 南投縣立旭光高級中學
編號 : 68108
來源 : [114.42.176.221]
最後登入時間 :
2025-10-04 22:52:03

先用 accumulate 累積,

再用 bisect 去追每個值。


cpp 應該能用 lower bound 去完成每個任務。別一個一個數。

#23973: Re:python 解題前想法


csc6163@gmail.com (CSC)

學校 : 不指定學校
編號 : 123259
來源 : [118.232.18.49]
最後登入時間 :
2021-09-04 21:02:28

先用 accumulate 累積,

再用 bisect 去追每個值。


cpp 應該能用 lower bound 去完成每個任務。別一個一個數。


您好,請問我這Python code只有20分,其餘TLE,有辦法再優化時間嗎? 謝謝。

[n,m]=[int(x) for x in input().split()]

p=[int(x) for x in input().split()]

pp=p+p

q=[int(x) for x in input().split()]

spp=[0]*(2*n)

spp[0]=pp[0]

for i in range(1,len(pp)):

    spp[i]=spp[i-1]+pp[i]

    

a=0   # a is house index as one mission finished, initially at 0

for i in range(len(q)):

    L=a   # left index at initial

    R=a+n-1  # right index at initial

    while L<R:

        m=int((L+R)/2)

        if q[i]>spp[m]-spp[a]+pp[a]:  

            L=m+1

        else: R=m

    a=(L+1)%n  # L=R

print(a)