注意数据范围;首先n^2超时,所以最少nlogn,但是看题目,感觉不需要数据结构优化;
所以可能是n的复杂度,区间修改,前缀和。同时注意数据初始化;

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int inf=0x3f3f3f3f;
signed main()
{
    int t,n,k,sum[210000],g[210000],a[210000],h[210000];
    cin>>t;
    while(t--)
    {
        cin>>n>>k;
        int ans=-1000000000000000000;//a的取值范围负数范围也有,所以sum可能为负
        memset(sum,0,sizeof(sum));
        memset(a,0,sizeof(a));     
        memset(g,-inf,sizeof(g));//记录前缀和
        memset(h,-inf,sizeof(h));//记录后缀和
        for(int i=1;i<=n;i++)
        {
            cin>>a[i];
            sum[i]=sum[i-1]+a[i];
            if(i>=k&&i<=n-k)
            {
               g[i]=max(g[i-1],sum[i]-sum[i-k]);//区间为k的最大前缀和
            }
        }
        for(int j=n;j>=1;j--)
        {
            if(j<=n-k+1&&j>=k-1){
                h[j]=max(h[j+1],sum[j+k-1]-sum[j-1]);//区间为k的最大后缀和
            }
        }
        for(int i=k;i<=n-k;i++)
            ans=max(ans,g[i]+h[i+1]);//枚举区间左右分割的边界
        cout<<ans<<endl;
    }
}