题解 | #数学考试#

数学考试

https://ac.nowcoder.com/acm/problem/15553

#include<bits/stdc++.h>

using namespace std;

typedef long long ll;

ll a[2000005];
int main(){
    int t;
    cin >> t;
    
    while(t--)
    {
        int n, k;
        cin >> n >> k;
        
        for(int i=1; i<=n; i++) cin >> a[i],a[i] += a[i-1];
        
        ll m = -1e18, ans = -1e18;
        for(int i = k; i + k <= n; i ++)
        {
            m = max(m, a[i] - a[i-k]);
            ans = max(ans, m + a[i+k] - a[i]);
        }
        
        cout << ans << endl;
    }

    return 0;
}
对于本题可能存在如下疑问:
如:2 3 4 1 2 3 4 令a为2 3 4, b为1 2 3, c为3 4 1, d为2 3 4
此时c + d > a + b,但事实上此时的最大值应为a + d而非c + d,因此不存在错误
全部评论

相关推荐

asdasdasda...:19岁,不容易啊可能升个本会好点,现在学历歧视太严重了
点赞 评论 收藏
分享
晗江雪:其实我只是觉得你们导员说的很好笑
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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