题解 P6568 【[NOI Online #3 提高组]水壶】
很显然每次倒水之后,水总是单调递增的,那么肯定要把这个更多的水,倒到下一个水壶里面去。也就是说每次倒水的范围是一个区间。
因此问题就很显然地转化为了求一个长度为
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <cctype>
#include <queue>
#include <vector>
using namespace std;
inline int read()
{
int x=0,f=1;char ch=getchar();
while (!isdigit(ch)){if (ch=='-') f=-1;ch=getchar();}
while (isdigit(ch)){x=x*10+ch-48;ch=getchar();}
return x*f;
}
int n,k,a[1000050];
long long sum,ans;
int main()
{
freopen("kettle.in","r",stdin);
freopen("kettle.out","w",stdout);
n=read(),k=read();
for (int i=1;i<=n;i++)
a[i]=read();
int l=1,r=k+1;
for (int i=l;i<=r;i++)
sum+=a[i];
while (r<=n)
{
ans=max(ans,sum);
l++;
r++;
sum-=a[l-1];
sum+=a[r];
}
cout << ans << endl;
return 0;
}