poj1976 //背包

#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;


int a[50001],f[50001][4];


int main(){
int t,n,k;
cin>>t;
while(t--){
cin>>n;
memset(a,0,sizeof(a));
memset(f,0,sizeof(f));
for(int i = 1;i<=n;++i){
cin>>a[i];
a[i] += a[i-1];
}
cin>>k;
for(int i = 1;i<=n;++i){
for(int j = 1;j<=3;++j){
int m = i-k;
if(m < 0) m = 0;
f[i][j] = max(f[i-1][j],f[m][j-1] + a[i] - a[m]);
}
}
cout<<f[n][3]<<endl;
}
return 0;
}

猜你喜欢

转载自blog.csdn.net/dukig/article/details/79763306