数学考试

数学考试

题目分析:

  1. 涉及算法:前缀和,区间求和
  2. 题目要求分为两个不连续的区间,[l,l + k - 1],[r,r + k - 1](r >= l + k);
  3. 枚举每两个适合的区间,(i - k + 1,i),(i + 1,i + k)
  4. 前缀和的区间求和为s[r] - s[l - 1];

代码如下:

#include<bits/stdc++.h>

using namespace std;

#define  mm(a,x) memset(a,x,sizeof a)
#define  mk make_pair
#define ll long long
#define pii pair<int,int>
#define inf 0x3f3f3f3f
#define lowbit(x) (x) & (-x)

const int N = 2e5 + 10;

int t;
ll n,k;
ll a[N],s[N];

int main() {
    cin >> t;
    while(t -- ){
        cin >> n >> k;
        mm(s,0);
        for(int i = 1; i <= n; i ++ ) cin >> a[i];    
        for(int i = 1; i <= n; i ++ ) s[i] = s[i - 1] + a[i];
        ll m1 = -1e18,ans = -1e18;
        for(int i = k; i + k <= n; i ++ ){
            m1 = max(m1,s[i] - s[i - k]);
            ans = max(ans,m1 + s[i + k] - s[i]);
        }
        cout<<ans<<endl;
    }    
    return 0;
}
全部评论

相关推荐

今天 00:59
已编辑
天津师范大学 Web前端
溱元:大四没有实习真的很难了 而且已经是大四下学期了,入行晚了 看样子是刚学完三大件+框架吧 简历真的需要再花时间好好打磨 但是马上又快毕业了 很多公司都要求实习6个月以上 感觉最大的问题就是你没有时间了 虽然可能有点扎心 但就像黑马pink老师说的那样 大四就不要再走it方向了 时间来不及了
听劝,我这个简历该怎么改...
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务