单调性优化DP
单调性优化DP
Tags:动态规划
作业部落链接
一、概述
裸的DP过不了,怎么办?
通常会想到单调性优化
- 单调队列优化
- 斜率优化
- 决策单调性
二、题目
- [x] 洛谷 P2120 [ZJOI2007]仓库建设
- [x] 洛谷 P2900 [USACO08MAR]土地征用
- [x] 洛谷 P3195 [HNOI2008]玩具装箱
- [x] 洛谷 P3628 [APIO2010]特别行动队
- [ ] 洛谷 P4360 [CEOI2004]锯木厂选址(留作复习)
- [x] 洛谷 P4072 [SDOI2016]征途
- [x] 洛谷 P3648 [APIO2014]序列分割
- [ ] 洛谷 P4027 [NOI2007]货币兑换
- [x] 洛谷 P2627 修剪草坪
- [x] 洛谷 P2569 [SCOI2010]股票交易
- [x] 洛谷 P2254 [NOI2005]瑰丽华尔兹
- [ ] BZOJ 4709 柠檬
三、各种方法
单调队列优化
你会发现\(i\)这个状态是由\([i-k1,i-k2]\)转移过来的,而且\(j\)对于\([j+k2,j+k1]\)的贡献是一样的,和后一个接受贡献的\(i\)无关,那么就可以使用单调队列优化了,每次就是队首的点来更新后面的状态
题目:修剪草坪、股票交易
斜率优化
当发现\(j\)转移到\(i\)的时候贡献和\(i\)有关系的时候,那么就要用到斜率优化了
比如说\[dp[i]=min(dp[i],dp[j]+(A[i]-A[j])^2)\]本来应该枚举\(j\)的,但是把式子化简\[dp[j]+A[j]^2=2A[i]A[j]+(dp[i]-A[i]^2)\]
再看看\[y=kx+b\]诶很像哦,那么我们要求的\(dp[i]\)就是截距\(+A[i]^2\)咯
那么一个状态\(j\)可以抽象成一个点\((x,y)=(A[j],dp[j]+A[j]^2)\)
此时斜率是\(2A[i]\),那么最小的截距就可以由上凸壳的最下端点转移而来
所以用单调队列维护凸壳就可以实现\(O(1)\)转移了
例题见上题单序列分割及以上所有,建议初学者先做[HNOI2008]玩具装箱
决策单调性优化
暂不会,例题见柠檬
四、做题经验
斜率优化通常维护这种东西
然后红线就是斜率,黑线就是要维护的凸壳
考虑清楚斜率的单调性以及正负就好了
一般斜率优化的题很好写暴力,多拍一下
单调性优化DP的更多相关文章
- Lightning Conductor 洛谷P3515 决策单调性优化DP
遇见的第一道决策单调性优化DP,虽然看了题解,但是新技能√,很开森. 先%FlashHu大佬,反正我是看了他的题解和精美的配图才明白的,%%%巨佬. 废话不多说,看题: 题目大意 已知一个长度为n的序 ...
- CF868F Yet Another Minimization Problem 分治决策单调性优化DP
题意: 给定一个序列,你要将其分为k段,总的代价为每段的权值之和,求最小代价. 定义一段序列的权值为$\sum_{i = 1}^{n}{\binom{cnt_{i}}{2}}$,其中$cnt_{i}$ ...
- 2018.09.28 bzoj1563: [NOI2009]诗人小G(决策单调性优化dp)
传送门 决策单调性优化dp板子题. 感觉队列的写法比栈好写. 所谓决策单调性优化就是每次状态转移的决策都是在向前单调递增的. 所以我们用一个记录三元组(l,r,id)(l,r,id)(l,r,id)的 ...
- [BZOJ4850][JSOI2016]灯塔(分块/决策单调性优化DP)
第一种方法是决策单调性优化DP. 决策单调性是指,设i>j,若在某个位置x(x>i)上,决策i比决策j优,那么在x以后的位置上i都一定比j优. 根号函数是一个典型的具有决策单调性的函数,由 ...
- BZOJ2216 Poi2011 Lightning Conductor 【决策单调性优化DP】
Description 已知一个长度为n的序列a1,a2,...,an. 对于每个1<=i<=n,找到最小的非负整数p满足 对于任意的j, aj < = ai + p - sqrt( ...
- 决策单调性优化dp 专题练习
决策单调性优化dp 专题练习 优化方法总结 一.斜率优化 对于形如 \(dp[i]=dp[j]+(i-j)*(i-j)\)类型的转移方程,维护一个上凸包或者下凸包,找到切点快速求解 技法: 1.单调队 ...
- BZOJ4899: 记忆的轮廓【概率期望DP】【决策单调性优化DP】
Description 通往贤者之塔的路上,有许多的危机. 我们可以把这个地形看做是一颗树,根节点编号为1,目标节点编号为n,其中1-n的简单路径上,编号依次递增, 在[1,n]中,一共有n个节点.我 ...
- 2018.10.14 NOIP训练 猜数游戏(决策单调性优化dp)
传送门 一道神奇的dp题. 这题的决策单调性优化跟普通的不同. 首先发现这道题只跟r−lr-lr−l有关. 然后定义状态f[i][j]f[i][j]f[i][j]表示猜范围为[L,L+i−1][L,L ...
- 洛谷 P5897 - [IOI2013]wombats(决策单调性优化 dp+线段树分块)
题面传送门 首先注意到这次行数与列数不同阶,列数只有 \(200\),而行数高达 \(5000\),因此可以考虑以行为下标建线段树,线段树上每个区间 \([l,r]\) 开一个 \(200\times ...
随机推荐
- 无锁HashMap的原理与实现
转载自: http://coolshell.cn/articles/9703.html 在<疫苗:Java HashMap的死循环>中,我们看到,java.util.HashMap并不能直 ...
- 使用eclipse遇到的unable to install breakpoint的问题
调试一个tomcat工程,设置好断点,启动工程,结果出现了下面的错误: 继续运行,再进入断点之前,还会再度提示,但是最终会命中断点. 使用CGLIB查找关键字,了解到CGLIB是一个AOP的拦截库,想 ...
- Linux bzip2命令详解
Linux bzip/bunzip2命令是.bz2文件的解压缩程序. bunzip2可解压缩.bz2格式的压缩文件.bunzip2实际上是bzip2的符号连接,执行bunzip2与bzip2 -d的效 ...
- ES(ElasticSearch)学习总结
基本概念 一个分布式多用户能力的全文搜索引擎,基于RESTful web接口. Elasticsearch和MongoDB/Redis/Memcache一样,是非关系型数据库.是一个接近实时的搜索平台 ...
- QT5.8连接Mysql提示QMYSQL driver not loaded
我们都知道在QT5.8系列里已经带了Mysql的dll文件 驱动的名字为“qsqlmysql.dll”和“qsqlmysqld.dll” 但是按照网上的各种教程和博客基本都是错的,只有个别人是对的. ...
- Spring 源代码阅读之声明式事务
事务控制流程 例如对如下代码进行事务控制 class service1{ method1(){ method2(); } } class service2{ method2(); } 原理:建立一个m ...
- 8年前,令我窒息的Java socket体验学习
本来已经放弃编程了,那时我发誓再也不去IT培训班了,如果找不到工作,我就去工地上打工.可心有不甘,老是惦记着,我不想天天面对生产线,做一个丧失思考能力的操作工,可后来呀,还是走上了程序员之路...这么 ...
- BZ4326 运输计划
Time Limit: 30 Sec Memory Limit: 128 MB Submit: 2132 Solved: 1372 Description 公元 2044 年,人类进入了宇宙纪元.L ...
- Hadoop学习之路(三)Hadoop-2.7.5在CentOS-6.7上的编译
下载Hadoop源码 1.登录官网 2.确定你要安装的软件的版本 一个选取原则: 不新不旧的稳定版本 几个标准: 1)一般来说,刚刚发布的大版本都是有很多问题 2)应该选择某个大版本中的最后一个小版本 ...
- R函数-时间序列ETS参数说明
alpha\beta\gamma分别代表水平.趋势.季节分量的平滑参数α.β.γ.这三个参数我们希望接近于0,以便于更平滑,即越小越平滑.在乘法模型的情况下,参数需要非常低,否则模型会对噪声太敏感. ...