这道题调了很久,一直 WA。
后来看了下题解才过,不过仍然有以下问题,望解答。
int main ()
{
for (int i = 1;i <= n;++i) a[i] = read (),sum[i] = sum[i - 1] + a[i];
for (int i = 1;i <= n;++i)
{
while (head <= tail && q[head] + m < i) ++head;
while (head <= tail && sum[q[tail]] >= sum[i]) --tail;
q[++tail] = i;
ans = max (ans,sum[i] - sum[q[head]]);
}
printf ("%d\n",ans);
return 0;
}
①处为什么是 q[head] + m < i 而不是 q[head] + m <= i?
②处求区间和为什么不是 sum[i] - sum[q[head] - 1]?