单调性优化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 ...
随机推荐
- linux 局域网探测工具nmap
NMap,也就是Network Mapper,是Linux下的网络扫描和嗅探工 具包,其基本功能有三个, 一是探测一组主机是否在线: 其次是扫描主机端口,嗅探所提供的网络服务: 还可以推断主机所用的操 ...
- 使用 Azure CLI 创建 Linux 虚拟机
Azure CLI 用于从命令行或脚本创建和管理 Azure 资源. 本指南详细介绍了如何使用 Azure CLI 部署运行 Ubuntu 服务器的虚拟机. 服务器部署以后,将创建 SSH 连接,并且 ...
- 原生java调用webservice的方法,不用生成客户端代码
原生java调用webservice的方法,不用生成客户端代码 2015年10月29日 16:46:59 阅读数:1455 <span style="font-family: Aria ...
- Oracle 补丁那些事儿(PS、PSU、CPU、SPU、BP、DBBP…)
当前ORACLE数据库提供两种方式的补丁一种是主动的Proactive Patches和另一种被动的Reactive Patches,其中Reactive Patches是指过去的ONE-OFF Pa ...
- 使用NSClassFromString
使用NSClassFromString 使用NSClassFromString可以直接从字符串初始化出对象出来,即使不引用头文件也没关系,以下是源码: AppDelegate.m // // AppD ...
- NSCopying简析
NSCopying简析 用到NSCopying的时候并不多,但还是有必要知道最基本的用途,比方说数组的拷贝操作,需要注意的是,数组的拷贝操作并不是执行了 copy 方法,而是需要执行 initWith ...
- Windows平台使用Gitblit搭建Git服务器教程
Windows平台使用Gitblit搭建Git服务器图文教程 Git服务现在独树一帜,相比与SVN有更多的灵活性,最流行的开源项目托管网站Github上面,如果托管开源项目,那么就是免费使用的,但是闭 ...
- docker及服务器遇到的坑
目录 DNS不可用 修改docker查找源 容器保持固定ip 查看docker连接 容器间通信 容器拷贝数据 php连接docker mysql 8.0出错authentication method ...
- November 5th Week 45th Saturday 2016
The longest day has an end. 最难过的日子也会有尽头. No, no, no, I can't see the end of such days, of course, if ...
- 字符串到-->list到-->字典的转变
怎么把字符串变成字典呢?? 要先转成列表list(用split方法),然后再把列表转成字典,这时候就用到-->怎么把列表转换成字典呢??列表的索引和字典的新增,然后就能把字符串转成字典了.