FJUT Home_W的拆分序列(DP)题解
Problem Description
Home 现在给你一个序列要求你将这个序列拆成恰好两个子序列。且使得两个子序列的抖动系数之和最大。
对于一个序列c1,c2,c3,……cm. 其抖动系数=|c1-c2|+|c2-c3|+……+|cm-1-cm|
Input
单组数据,一个行是一个整数n.代表序列长度。
接下一行来有n个整数,a1,a2,a3,……an 代表这个序列
2<=n<=1000
1<=ai<=1e6
Output
输出一行代表在最优的拆分方案下,最大的抖动系数之和。注意其中任意一个子序列都不可以为空
思路:我们把dp[i][j]视为以i和j结尾的两列的最大值。
我们在放a[i]的时候可以放在i - 1后面,这时就是i和j结尾;或者放在i - 1前的任意一个位置j后面,这时就是i - 1和i结尾,特别的,当i是第一个数时加0。
代码:
#include<set> #include<map> #include<stack> #include<cmath> #include<queue> #include<vector> #include<string> #include<cstdio> #include<cstring> #include<sstream> #include<iostream> #include<algorithm> #define P pair<int,int> typedef long long ll; using namespace std; const int maxn = 1000 + 10; const int MOD = 1e9 + 7; const int INF = 0x3f3f3f3f; int dp[maxn][maxn]; //以i和j结尾的最大值 int a[maxn]; int main(){int n;scanf("%d" ,&n);for(int i = 1; i <= n; i++)scanf("%d", &a[i]);for(int i = 2; i <= n; i++){for(int j = 0; j < i - 1; j++){a[0] = a[i];dp[i][j] = max(dp[i][j], dp[i - 1][j] + abs(a[i] - a[i - 1]));dp[i][i - 1] = max(dp[i][i - 1], dp[i - 1][j] + abs(a[i] - a[j]));}}int ans = 0;for(int i = 1; i < n; i++)ans = max(ans, dp[n][i]);printf("%d\n", ans);return 0; }
转载于:https://www.cnblogs.com/KirinSB/p/10549219.html
FJUT Home_W的拆分序列(DP)题解相关推荐
- 【codevs1048】【codevs115406TG】石子归并、能量项链,序列dp的典型题目
1048 石子归并 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 有n堆石子排成一列,每堆石子有一个重量w[i], 每次合并 ...
- python分割数字_python实现整数拆分,输出拆分序列
昨天笔试VIPKID有一道关于整数拆分的题目,要求输出拆分后的序列,当时没有做出来,记录一下可以实现的想法: 题目示例: 从键盘读入一个数 n, 输出所有和为 n 的子序列和,包括 n 测试用例: 输 ...
- [JSOI2008]Blue Mary的战役地图——全网唯一一篇dp题解
全网唯一一篇dp题解 网上貌似全部都是哈希+二分(反正我是大概baidu了翻了翻)(还有人暴力AC了的..) 哈希还是相对于dp还是比较麻烦的. 而且正确性还有可能被卡(当然这个题不会) 而且还容易写 ...
- 牛客题霸 [括号序列] C++题解/答案
牛客题霸 [括号序列] C++题解/答案 题目描述 给出一个仅包含字符'(',')','{','}','['和']',的字符串,判断给出的字符串是否是合法的括号序列 括号必须以正确的顺序关闭,&quo ...
- 《Python Cookbook 3rd》笔记(1.1):拆分序列后赋值给多个变量
拆分序列后赋值给多个变量 问题 现有一个包含N个元素的元组或序列,如何将其值拆分后同时赋值给N个变量? 解法 任何序列 (或可迭代对象) 可通过一个简单赋值语句拆分并赋值给多个变量.唯一前提是变量数量 ...
- 【NOIP训练】塔防游戏 序列DP / 数据结构
题 有 n n n 座塔标号为 1−n" role="presentation" style="position: relative;">1−n ...
- codevs——1576 最长严格上升子序列(序列DP)
时间限制: 1 s 空间限制: 256000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 给一个数组a1, a2 ... an,找到最长的上升降子序列ab1< ...
- Codeforces Beta Round #5 C. Longest Regular Bracket Sequence 括号序列 dp+栈
点击打开链接 题意: 给你一个括号序列,让你找到最长的连续的合法括号序列 然后让你输出这个括号序列的长度是多少 这么长的括号序列一共有多少个 思路: 看到括号匹配,就用stack来弄就好了 然后我们d ...
- codevs——1044 拦截导弹(序列DP)
1999年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 某国为了防御敌国的导弹袭击,发展出一种 ...
最新文章
- Java实现文件复制的四种方式
- 第三章 经典场景设计
- Summer Training day4 欧拉降幂
- html+css+js中的小知识点汇聚(无序 停更)
- matlab2c使用c++实现matlab函数系列教程-exppdf函数
- vm12 pro 安装radhat6.3
- Jmeter压力测试实例
- Tomcat自己解压WAR包
- 理解拉普拉斯平滑 Laplace Smoothing
- 康师傅承认:所谓矿物质水实为自来水净化而成
- 使用winserver2003配置DNS服务器
- Hi3519AV100 适配IMX347
- 网站备案需要什么材料
- 注册IMDB的API KEY
- 计算机it知识,IT行业-计算机基础知识总结
- SEO是什么意思?为什么要做SEO?
- python 按键精灵识图_Python实现按键精灵(二)-找图找色
- Postgresql 表bloating 怎么办 ---pg_bloat_check 你造(知道)吗?
- 分辨率与屏幕尺寸之间的关系
- nuke12安装不了?nuke12 mac 安装教程 nuke12安装步骤教程分享