首页 > 其他 > 详细

Yet Another Yet Another Task

时间:2020-05-29 20:41:19      阅读:42      评论:0      收藏:0      [点我收藏+]

D - Yet Another Yet Another Task

这个题的思考角度很独特,它是通过遍历子段中的最大值来实现的,这样我们就只用找到段内元素小于当前最大值的,最大连续段的和即可。比我之前想的一个 dp 方便多了…

我感觉这些题很多时候考察的都是思考问题的角度,而不是考察思维能力的极限,所以当思考一个问题思考到大脑已经无法处理的时候,那就换一个角度吧。

// Created by CAD on 2020/5/29.
#include <bits/stdc++.h>
using namespace std;

const int maxn=1e5+5;
int a[maxn];

int main(){
    int n;cin>>n;
    for(int i=1;i<=n;++i)
        cin>>a[i];
    int ans=0;
    for(int i=1; i <= 30; ++i){
        int sum=0;
        for(int j=1;j<=n;++j){
            sum+=a[j];
            if(a[j]>i||sum<0) sum=0;
            else ans=max(ans,sum-i);
        }
    }
    cout<<ans<<"\n";
}

Yet Another Yet Another Task

原文:https://www.cnblogs.com/CADCADCAD/p/12989286.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!