[每日一题-第一期]数学考试

数学考试

思路

前缀和。不用同时求出最合适的两个和,甚至随着数组的刷新,并不是最大的组合组成最后的结果。参考数据:-100 11 22 22 11 -100

代码

//数学考试
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
typedef long long ll;
ll a[2000005];
int main() {
    int _; 
    cin >> _;
    while (_--) {
        int n, k; 
        cin >> n >> k;
        for (int i = 1; i <= n; i++) 
            cin >> a[i], a[i] += a[i - 1];
        ll ma = -1e18, ans = -1e18;
        for (int i = k; i + k <= n; i++) {
            ma = max(ma, a[i] - a[i - k]);
            ans = max(ans, ma + a[i + k] - a[i]);
        }
        cout << ans << endl;
    }
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值