3.24:不知道自己哪里写错了,只是通过了 3/10。还很自信的觉得自己没写错 >_<
麻烦走过路过的大佬帮忙瞅下,看看还有啥其他的测试用例,边界条件是我没想到的
小美请小团吃回转寿司。转盘上有N盘寿司围成一圈,第1盘与第2盘相邻,第2盘与第3盘相邻,…,第N-1盘与第N盘相邻,第N盘与第1盘相邻。小团认为第i盘寿司的美味值为A[i](可能是负值,如果小团讨厌这盘寿司)。现在,小团要在转盘上选出连续的若干盘寿司,使得这些寿司的美味值之和最大(允许不选任何寿司,此时美味值总和为0)。
输入描述
第一行输入一个整数T(1<=T<=10),表示数据组数。
每组数据占两行,第一行输入一个整数N(1<=N<=10^5);
第二行输入N个由空格隔开的整数,表示A[1]到A[N](-10^4<=A[i]<=10^4)。
输出描述
每组数据输出占一行,输出一个整数,表示连续若干盘寿司的美味值之和的最大值。
输入测试用例
1
4
3 -2 4 -1
输出测试用例
6
import sys
if __name__ == '__main__':
T = int(input())
for _ in range(T):
N = int(input())
A = list(map(int, input().split()))
prefix = [0]
prefix_sum = 0
A.extend(A)
for i in range(2*N):
prefix_sum += A[i]
prefix.append(prefix_sum)
# print(prefix)
min_prefix, min_idx, ans = sys.maxsize, 0, 0
for i in range(1, len(prefix)):
if i - min_idx > N:
# print(i, " min_idx: ", min_idx)
break
ans = max(ans, prefix[i] - min_prefix)
if prefix[i] <= min_prefix:
min_prefix = prefix[i]
min_idx = i
print(ans)