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

Codeforces Round #407 C

时间:2017-04-30 22:58:58      阅读:232      评论:0      收藏:0      [点我收藏+]

标签:class   amp   include   clu   ++i   return   sizeof   最大值   大连   

C. Functions again

题意:给你一个数列,求函数f(l,r) 的最大值 函数f(l,r)的定义如下

技术分享

思路:求出新的的数列 ci=|ai-ai+1| f(l,r)即为l到r-1的和 并分奇偶分别计算最大连续子列和

AC代码:

#include "iostream"
#include "string.h"
#include "stack"
#include "queue"
#include "string"
#include "vector"
#include "set"
#include "map"
#include "algorithm"
#include "stdio.h"
#include "math.h"
#define ll long long
#define bug(x) cout<<x<<" "<<"UUUUU"<<endl;
#define mem(a) memset(a,0,sizeof(a))
using namespace std;
const int N=1e5+100;
int a[N],b[N],c[N];
int main(){
    int n;
    cin>>n;
    for(int i=1; i<=n; ++i){
        scanf("%d",a+i);
    }
    for(int i=1; i<n; ++i){
        b[i]=abs(a[i]-a[i+1]);
        c[i]=b[i];
        if(i&1) b[i]*=-1;
        else c[i]*=-1;
    } //for(int i=1; i<n; ++i) cout<<b[i]<<" ";cout<<"\n";for(int i=1; i<n; ++i) cout<<c[i]<<" ";cout<<"\n";
    ll tmp=0,ans=0;
    for(int i=2; i<n; ++i){
        tmp+=b[i];
        ans=max(tmp,ans);
        if(tmp<0){
            tmp=0;
        }
    }
    tmp=0;
    for(int i=1; i<n; ++i){
        tmp+=c[i];
        ans=max(tmp,ans);
        if(tmp<0){
            tmp=0;
        }
    }
    cout<<ans<<endl;
    return 0;
}

 

Codeforces Round #407 C

标签:class   amp   include   clu   ++i   return   sizeof   最大值   大连   

原文地址:http://www.cnblogs.com/max88888888/p/6790492.html

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