码迷,mamicode.com
首页 > 其他好文 > 详细

【DP】DP的斜率优化学习笔记

时间:2015-04-09 21:57:18      阅读:115      评论:0      收藏:0      [点我收藏+]

标签:dp   斜率优化   凸包   

文前:其实我的DP这么弱目测学了斜率优化也好不了因为我的DP稍微有点难度就推不出状态转移方程了>0<(求神犇别嘲讽)
然而我还是义无反顾的学了斜率优化(其实你只是做题时候用到了顺便去看了一下吧魂淡!)
不说了我们切正文

—————————-线割分是我>ω<————————————————–
在做DP时候我们常常会因为自己推出的方程有太多的状态而苦恼,这些状态中有太多是对最终答案没有贡献的,而我们还需要去记录他们,最终换来一个T真是令人不爽
但是有一些特殊的DP就可以使用斜率优化来避免这个问题
在斜率优化中,我们把DP的每一个状态看成是平面坐标系内的一个点
假设有这样一些点:
技术分享
既然每个点表示一个状态,那y轴最上面那个就是我们要的最优解对不对.
我们在相邻的两个点之间连几条线
技术分享
可以很明显的看到,这些线的斜率是不同的,这时候我们就可以用斜率优化来舍弃一些无用的点(状态)
比如说:
技术分享
可以看到,点2-3之间的直线比直线1-3的斜率要大的,而这个2其实就是一个无用状态了,我们就可以把它舍弃掉(也就是说它不作为凸壳上的一部分)
同样的我们可以持续舍弃无用状态(像构建凸包一样压栈弹栈)
最后就:
技术分享
变成了这个样子啦
方法和维护凸包很像(当然是不一样的啦baka要不然2,4,5都拉进去了=。=).
所以这就是DP的斜率优化了0-0
也就是说它核心的思想是,如果有几个状态能够构成如下图形:
技术分享
那么无用状态(对最终结果没有贡献)就舍弃掉好了→-→
(其实我只是在做货币兑换Cash时候顺便看了下如果我写错了请随便喷我然后叫我改过来QUQ)

【DP】DP的斜率优化学习笔记

标签:dp   斜率优化   凸包   

原文地址:http://blog.csdn.net/creationaugust/article/details/44965167

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!