题解:洛谷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;
}
posted @ 2025-03-18 20:15  mcr130102  阅读(92)  评论(0)    收藏  举报
请不要抄袭任何人的博客,这是对一名开发者最基本的尊重。