題目: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;