思路
首先这是一道前缀和的题目。官方解也是前缀和,前缀和在不需要修改的情况下可以在\(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;
}