题目传送门
题目描述
有 n 个容量无穷大的水壶,它们从 1∼n 编号,初始时 i 号水壶中装有 Ai 单位的水。
你可以进行不超过 k 次操作,每次操作需要选择一个满足 1≤x≤n−1 的编号 x,然后把 x 号水壶中的水全部倒入 x+1 号水壶中。
最后你可以任意选择恰好一个水壶,并喝掉水壶中所有的水。现在请你求出,你最多能喝到多少单位的水。
输入格式
第一行一个正整数 n,表示水壶的个数。
第二行一个非负整数 k,表示操作次数上限。
第三行 n 个非负整数,相邻两个数用空格隔开,表示水壶的初始装水量 A1, A2, ⋯⋯, An。
输出格式
一行,仅一个非负整数,表示答案。
撕箓
如果仔细看题的话,就会发现Ai始终0,so直接找到i到i+k的最大值就可以了。求出前缀和,取其中连加最大值,输出就可以了。
碮碣
#include <bits/stdc++.h>
using namespace std;
int n,k,a[1000050];
long long qz[1000050],maxx;
int main()
{
cin>>n>>k;
qz[0]=0;
for(int i=1;i<=n;i++){
cin>>a[i];
qz[i]=qz[i-1]+a[i];
}
for(int i=1;i<=n-k;i++){
maxx=max(maxx,qz[i+k]-qz[i-1]);
}
cout<<maxx;
return 0;
}