牛客-数学考试——前缀和的k区间问题

Posted C+++++++++++++++++++

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了牛客-数学考试——前缀和的k区间问题相关的知识,希望对你有一定的参考价值。

题目

题目连接

题目解析

总结下上面说的两点:

  1. 需要同时找两个的原因。
  2. 如何优化到O(n)级别。

解题代码

#include<bits/stdc++.h>
using namespace std;
using ll = long long;
ll dp[200005];
int main()
    int t,n,k;
    ios::sync_with_stdio(false);
    cin>>t;
    while(t--)
        cin>>n>>k;
        for(int i=1;i<=n;i++)
            cin>>dp[i];
            dp[i] += dp[i-1];
        
        ll ret = -1e18;
        ll mx1 = -1e18;
        for(int i=k;i+k<=n;i++)
            mx1 = max(mx1,dp[i]-dp[i-k]);
            ret = max(mx1+dp[i+k]-dp[i],ret);
        
        cout<<ret<<'\\n';
    

以上是关于牛客-数学考试——前缀和的k区间问题的主要内容,如果未能解决你的问题,请参考以下文章

数学考试

2022牛客寒假算法基础集训营 4 全部题解

2022牛客寒假算法基础集训营 4 全部题解

牛客欢乐赛1 E题

树状数组差分求前缀和的前缀和

k小数查询(前缀和)