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)题解相关推荐

  1. 【codevs1048】【codevs115406TG】石子归并、能量项链,序列dp的典型题目

    1048 石子归并 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 有n堆石子排成一列,每堆石子有一个重量w[i], 每次合并 ...

  2. python分割数字_python实现整数拆分,输出拆分序列

    昨天笔试VIPKID有一道关于整数拆分的题目,要求输出拆分后的序列,当时没有做出来,记录一下可以实现的想法: 题目示例: 从键盘读入一个数 n, 输出所有和为 n 的子序列和,包括 n 测试用例: 输 ...

  3. [JSOI2008]Blue Mary的战役地图——全网唯一一篇dp题解

    全网唯一一篇dp题解 网上貌似全部都是哈希+二分(反正我是大概baidu了翻了翻)(还有人暴力AC了的..) 哈希还是相对于dp还是比较麻烦的. 而且正确性还有可能被卡(当然这个题不会) 而且还容易写 ...

  4. 牛客题霸 [括号序列] C++题解/答案

    牛客题霸 [括号序列] C++题解/答案 题目描述 给出一个仅包含字符'(',')','{','}','['和']',的字符串,判断给出的字符串是否是合法的括号序列 括号必须以正确的顺序关闭,&quo ...

  5. 《Python Cookbook 3rd》笔记(1.1):拆分序列后赋值给多个变量

    拆分序列后赋值给多个变量 问题 现有一个包含N个元素的元组或序列,如何将其值拆分后同时赋值给N个变量? 解法 任何序列 (或可迭代对象) 可通过一个简单赋值语句拆分并赋值给多个变量.唯一前提是变量数量 ...

  6. 【NOIP训练】塔防游戏 序列DP / 数据结构

    题 有 n n n 座塔标号为 1−n" role="presentation" style="position: relative;">1−n ...

  7. codevs——1576 最长严格上升子序列(序列DP)

     时间限制: 1 s  空间限制: 256000 KB  题目等级 : 黄金 Gold 题解 题目描述 Description 给一个数组a1, a2 ... an,找到最长的上升降子序列ab1< ...

  8. Codeforces Beta Round #5 C. Longest Regular Bracket Sequence 括号序列 dp+栈

    点击打开链接 题意: 给你一个括号序列,让你找到最长的连续的合法括号序列 然后让你输出这个括号序列的长度是多少 这么长的括号序列一共有多少个 思路: 看到括号匹配,就用stack来弄就好了 然后我们d ...

  9. codevs——1044 拦截导弹(序列DP)

    1999年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解 题目描述 Description 某国为了防御敌国的导弹袭击,发展出一种 ...

最新文章

  1. Java实现文件复制的四种方式
  2. 第三章 经典场景设计
  3. Summer Training day4 欧拉降幂
  4. html+css+js中的小知识点汇聚(无序 停更)
  5. matlab2c使用c++实现matlab函数系列教程-exppdf函数
  6. vm12 pro 安装radhat6.3
  7. Jmeter压力测试实例
  8. Tomcat自己解压WAR包
  9. 理解拉普拉斯平滑 Laplace Smoothing
  10. 康师傅承认:所谓矿物质水实为自来水净化而成
  11. 使用winserver2003配置DNS服务器
  12. Hi3519AV100 适配IMX347
  13. 网站备案需要什么材料
  14. 注册IMDB的API KEY
  15. 计算机it知识,IT行业-计算机基础知识总结
  16. SEO是什么意思?为什么要做SEO?
  17. python 按键精灵识图_Python实现按键精灵(二)-找图找色
  18. Postgresql 表bloating 怎么办 ---pg_bloat_check 你造(知道)吗?
  19. 分辨率与屏幕尺寸之间的关系
  20. nuke12安装不了?nuke12 mac 安装教程 nuke12安装步骤教程分享

热门文章

  1. SQL 流程控制语句 之四 WAITFOR语句介绍
  2. jsp 验证码以及验证码局部刷新
  3. Spring Aop实例
  4. Struts2+Spring2.5+Hibernate3.1实现登陆示例
  5. Android学习:自定义ViewGroup方法总结
  6. 用标准dl,dt,dd标签抛弃table列表
  7. 买卖股票的最佳时机|||
  8. Golang中常用的并发模型
  9. C++中的const
  10. 用宏定义代替printf函数