题意:选出连续m个数,使得和最大。(数组形成一个圆)
题记:开两倍的数组,在原数组后面在放一个原数组。然后找长度为m区间的最大值即可。
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=250;
int a[N],b[N*2];
int main(){
int t;
cin>>t;
while(t--){
int n,m;
cin>>n>>m;
for(int i=0;i<n;i++)
cin>>a[i];
for(int i=1,j=0;i<=2*n;i++,j++){
b[i]=b[i-1]+a[j%n];
}
int ans=0;
for(int i=1;i<=n;i++){
ans=max(b[i+m]-b[i],ans);
}
cout<<ans<<endl;
}
return 0;
}