官方都提示了本题如果用慢的语言过不了test 2,那要不要学C++呢,可我觉得目前还是应该着重学习算法,我还不到追求程序效率的时候。。。
看了前排大佬代码,改写成了Python,果不其然test 2 TLE了。。
T=int(input())
for tt in range(T):
N=int(input())
array=[int(s) for s in input().split()]
min_presum=0
dict1={}
presum=0
ans=0
dict1[0]=1
for i in range(len(array)):
presum=presum+array[i]
T=presum
j=0
while T>=min_presum:
T=presum-j**2
j=j+1
if T in dict1.keys():
ans=ans+dict1[T]
if presum in dict1.keys():
dict1[presum]+=1
else:
dict1[presum]=1
min_presum=min(min_presum,presum) # 更新最小的前缀和
print("Case #{}: {}".format(tt+1, ans))
题目4 的线段树我还得学习学习。。