题解:洛谷P6568 [NOI Online #3 提高组] 水壶
思路
首先这是一道前缀和的题目。官方解也是前缀和,前缀和在不需要修改的情况下可以在\(O(1)\)的时间复杂度完成区间查询。
我们只需要遍历每一个长度为\(k\)的区间即可。
代码
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,k;
cin>>n>>k;
int a[n+1];
int s[n+1] ={};//前缀和
for(int i = 1;i<=n;i++){
cin>>a[i];
s[i]=s[i-1]+a[i];//递推获得前缀和
}
int maxn=-114514;
for(int i = k;i<=n;i++){
maxn=max(s[i]-s[i-k-1],maxn);//找出最大区间
}
cout<<maxn;
}
这是mcr130102的博客,转载请注明出处

浙公网安备 33010602011771号