博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Codeforces Round #276 (Div. 1) D. Kindergarten dp
阅读量:6830 次
发布时间:2019-06-26

本文共 2291 字,大约阅读时间需要 7 分钟。

D. Kindergarten

Time Limit: 20 Sec

Memory Limit: 256 MB

题目连接

http://codeforces.com/problemset/problem/484/D

Description

In a kindergarten, the children are being divided into groups. The teacher put the children in a line and associated each child with his or her integer charisma value. Each child should go to exactly one group. Each group should be a nonempty segment of consecutive children of a line. A group's sociability is the maximum difference of charisma of two children in the group (in particular, if the group consists of one child, its sociability equals a zero).
The teacher wants to divide the children into some number of groups in such way that the total sociability of the groups is maximum. Help him find this value.

Input

The first line contains integer n — the number of children in the line (1 ≤ n ≤ 106).

The second line contains n integers ai — the charisma of the i-th child ( - 109 ≤ ai ≤ 109).

Output

Print the maximum possible total sociability of all groups.

Sample Input

5

1 2 3 1 2

Sample Output

3

HINT

 

题意

给你n个数,然后让你分成若干组,只有连续的才能分成一组

然后每组的分数是,这组的最大值减去这组的最小值

问你最大能拿多少分

题解:

很显然单调的必然会分在一个组,这儿有一个问题就是拐点怎么办,分在左边还是右边?

那就dp咯

代码

 

#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
typedef long long ll;using namespace std;//freopen("D.in","r",stdin);//freopen("D.out","w",stdout);#define sspeed ios_base::sync_with_stdio(0);cin.tie(0)#define test freopen("test.txt","r",stdin)#define maxn 1000005#define mod 10007#define eps 1e-5const int inf=0x3f3f3f3f;const ll infll = 0x3f3f3f3f3f3f3f3fLL;inline ll read(){ ll x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){ if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f;}//**************************************************************************************ll dp1[maxn];ll dp2[maxn];ll dp3[maxn];int a[maxn];int main(){ int n=read(); for(int i=0;i<=n;i++) dp1[i]=dp2[i]=dp3[i]=-infll; for(int i=1;i<=n;i++) a[i]=read(); dp1[1]=a[1]; dp2[1]=-a[1]; dp3[1]=0; for(int i=2;i<=n;i++) { dp3[i]=max(dp3[i-1],max(dp1[i-1]-a[i],dp2[i-1]+a[i])); dp1[i]=max(dp1[i-1],dp3[i-1]+a[i]); dp2[i]=max(dp2[i-1],dp3[i-1]-a[i]); } cout<
<

 

转载地址:http://ytjkl.baihongyu.com/

你可能感兴趣的文章
redis make test 报错
查看>>
使用阿里DOCKER镜像加速器加速
查看>>
java-信息安全(二)-对称加密算法DES,3DES,AES,Blowfish,RC2,RC4
查看>>
java-信息安全(七)-基于非对称加密,对称加密等理解HTTPS
查看>>
[LeetCode] Encode and Decode TinyURL 编码和解码精简URL地址
查看>>
得到指定目录下的文件名
查看>>
JS代码压缩格式化在线地址
查看>>
maven 使用之自动编译热部署设置
查看>>
Cassandra第一次使用
查看>>
[转]关于OpenGL的绘制上下文
查看>>
Java ArrayList、string、string[]之间的转换
查看>>
Eclipse 配置Maven以及修改默认Repository
查看>>
【NOI2015】【寿司晚宴】【状压DP】
查看>>
软件开发的一些"心法"
查看>>
MySQL索引及查询优化总结
查看>>
获取iOS系统版本号,慎重使用[[[UIDevice currentDevice] systemVersion] floatValue]——【sdk缺陷】...
查看>>
秀尔算法:破解RSA加密的“不灭神话” --zz
查看>>
Redis学习之路(003)- hiredis安装及测试
查看>>
【剑指offer】近期公共祖先
查看>>
剑指offer 38 数字在排序数组中出现的次数
查看>>