codeforces 484D kindergarten
来源:互联网 发布:网络推广 photoshop 编辑:程序博客网 时间:2024/05/16 16:56
刚开始没细读题目,直接快排后减了了一下,就交了上去,结果直接Wa。猥琐的看了数据,竟然发现两组数据只是位置不同,得到的答案竟然也不相同,觉得不妙。
题目大意:
给你一列数,让你把他们分成几个区间,每个区间的代表值为区间中数的最大值减去最小值,求总的代表值之和最大为多少?
如果一列数,a[i]....a[j],是单调递增的的,则这一段的最大代表值为a[j]-a[i].并加到计算递增数列的变量值上;如果出现转折点则转到另一个变量值上],加起来计算递减段的的代表值之和。
用dp可很好解决。
代码如下:
#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int maxn=1e6+5;int charisma[maxn];long long dp[maxn][2];int main(){ int n; while(scanf("%d",&n)==1){ scanf("%d",charisma); for(int i=1;i<n;i++){ scanf("%d",charisma+i); if(charisma[i]>charisma[i-1]){ dp[i][0]=max(dp[i-1][1],dp[i-1][0]+charisma[i]-charisma[i-1]); dp[i][1]=max(dp[i-1][0],dp[i-1][1]); } else{ dp[i][1]=max(dp[i-1][0],dp[i-1][1]+charisma[i-1]-charisma[i]); dp[i][0]=max(dp[i-1][0],dp[i-1][1]); } } printf("%I64d\n",max(dp[n-1][0],dp[n-1][1])); } return 0;}
0 0
- codeforces 484D kindergarten
- CodeForces 484D Kindergarten
- CodeForces - 484D Kindergarten
- Codeforces 484D-kindergarten
- CodeForces 484D Kindergarten
- Kindergarten - CodeForces 484 D dp
- Codeforces 484D Kindergarten(dp)
- 【codeforces 484D】【DP】Kindergarten
- [Codeforces 484D Kindergarten] DP
- Codeforces 484D. Kindergarten DP贪心
- codeforces 484D Kindergarten 【动态规划】
- CodeForces 484 D.Kindergarten(dp)
- [Codeforces 484D] Kindergarten (DP + 树状数组优化)
- 484D - Kindergarten DP
- Codeforces Round #276 (Div. 1) D. Kindergarten
- Codeforces Round #276 (Div. 1) D. Kindergarten dp
- 1月2日 Codeforces Round #276 (Div. 1) D. Kindergarten
- Kindergarten
- CentOS下yum安装LAMP
- 点击FrameLayout,使其里面的控件TextView改变颜色
- 中国互联网之二十年:1994-2014
- java中equals和==的区别
- 山门
- codeforces 484D kindergarten
- UVA - 825 Walking on the Safe Side
- 图片上传的类
- Java基础——网络编程
- 最全的Webshell提权方法总结
- js中判断一个radio按钮被选中
- 正则表达式 - 示例
- Set集合中元素的保存问题(hashSet和treeSet中不能存放相同元素)
- LeetCode——Climbing Stairs