题目链接:哆啦A梦传送门
题解:贪心。
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int maxn=200010;
#define INF 0x3f3f3f3f
LL a[maxn];
LL ans[maxn];
int main()
{
int ncase;
scanf("%d",&ncase);
while(ncase--)
{
int n,k;
scanf("%d%d",&n,&k);
a[0]=0;
for(int i=1;i<=n;i++)
scanf("%lld",a+i),a[i]+=a[i-1];
for(int i=k;i<=n;i++) ///ans[i]表示以i为右端点,长度为k的和
{
ans[i]=a[i]-a[i-k];
}
LL item1=-999999999999999;
LL item2=-999999999999999;
for(int i=2*k;i<=n;i++)
{
if(item1<ans[i-k]) item1=ans[i-k];
if(item2<item1+ans[i]) item2=item1+ans[i];
// item1=max(item1,ans[i-k]);
// item2=max(item2,item1+ans[i]);
}
printf("%lld\n",item2);
}
return 0;
}