题目:https://www.luogu.com.cn/problem/P6568
分析:
这道题求连续k个数的最大值,且每个数大于等于0,所以采取前缀和
正统前缀和模板
int n;
cin>>n;
int a[n+1],ary[n+1];
ary[n+1]=0;//这里需要将第一个数赋初始值,因为它会影响计算
//并不需要将全部数赋初始值,因为后面的数是由前面的数和输入的数计算得来
//本身的值对结果无影响
for(int i=1;i<=n;i++){
cin>>a[i];
ary[i]=ary[i-1]+a[i];
}
本题
关键:
它是可以k次操作,也就是选k+1个壶
答案
int n,k;
cin>>n>>k;
int a[n+1];
int b[n+1];
b[0]=0;
for(int i=1;i<=n;i++){
cin>>a[i];
b[i]=b[i-1]+a[i];
}
int maxn=0;
for(int i=k+1;i<=n;i++){
maxn=max(maxn,b[i]-b[i-k-1]);
}
cout<<maxn;