码迷,mamicode.com
首页 > 其他好文 > 详细

UESTC - 1357 前缀和维护

时间:2018-02-10 11:17:29      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:post   注意   logs   read   如何   i+1   c++   turn   print   

有点小细节需要注意
sum实时维护有效的连续和

/*H E A D*/
ll dp1[maxn],dp2[maxn];
ll a[maxn],n,sum;
int main(){
    while(~iin(n)){
        rep(i,1,n) a[i]=read();
        dp1[0]=-(1ll<<62);dp2[n+1]=dp1[0];
//      rep(i,1,n) dp1[i]=max(dp1[i-1]+a[i],a[i]);//a[i]无论如何都加上去了 
//      rrep(i,n,1) dp2[i]=max(dp2[i+1]+a[i],a[i]);
        sum=0;
        rep(i,1,n){
            if(sum<0) sum=0;
            sum+=a[i];
            dp1[i]=max(dp1[i-1],sum);
        }
        sum=0;
        rrep(i,n,1){
            if(sum<0)sum=0;
            sum+=a[i];
            dp2[i]=max(dp2[i+1],sum);
        }
        ll ans=1ll<<63;ans=-ans;
        rep(i,2,n-1) ans=max(ans,dp1[i-1]+dp2[i+1]);
        println(ans);
    }
    return 0;
}

UESTC - 1357 前缀和维护

标签:post   注意   logs   read   如何   i+1   c++   turn   print   

原文地址:https://www.cnblogs.com/caturra/p/8437912.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!