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

cf789c

时间:2019-01-01 23:59:01      阅读:280      评论:0      收藏:0      [点我收藏+]

标签:sum   span   main   efi   连续   def   nbsp   mes   include   

主要是线性时间内求最大连续和

#include<bits/stdc++.h>
using namespace std;
#define maxn 200005
#define ll long long

int n,a[maxn];
ll ans;

ll solve(){
    ll Max=-99999999,Min=0,sum[maxn];
    sum[0]=0;
    for(int i=1;i<n;i++){
        sum[i]=sum[i-1]+a[i];
        Min=min(Min,sum[i]);
        Max=max(Max,sum[i]-Min);
    }
    return Max;
} 

int main(){
    scanf("%d",&n);
    for(int i=1;i<=n;i++) scanf("%d",&a[i]);
    for(int i=1;i<=n-1;i++) a[i]=abs(a[i+1]-a[i]);
    for(int i=1;i<=n-1;i++) if(i%2==0) a[i]/=-1;
    ans=-99999999;
    ans=max(ans,solve());
    for(int i=1;i<=n-1;i++) a[i]*=-1;
    ans=max(ans,solve());
    printf("%lld",ans);
}

 

cf789c

标签:sum   span   main   efi   连续   def   nbsp   mes   include   

原文地址:https://www.cnblogs.com/zsben991126/p/10206389.html

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