斜率优化dp专题汇编.docVIP

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
斜率优化dp专题汇编

斜率优化dp专题 HDU 3507,BZOJ1010 1597 3437 1096 1911 3675 能用斜率优化的dp题一般都需要证明决策单调性(然而我到现在还没有搞懂到底何为决策单调)。一般有几种思路: 1)将得到的数据打表,一般打表打[L,R]内这一段的值,判断是否基本满足四边形不等式: 的模样,或者还有敲暴力之后看看dp数组内的值是否单调。 2)在敲暴力的过程中能感觉到,需要从前面已经得到的结果查找最优解,但是这个最优解在一定范围内,而不必全部找过来的时候,就可能需要用上优化了。 3)重要的是如果能写出《1D 1D》中的经典模型的形式:f(x)=minx?1i=1{f(i)+w[i,x]} 那几乎就可以确定出题人就在考斜率优化dp。 一旦确定这题可以用斜率优化dp做,那么题目就变成了板子题。按我最近刷这类题目的方法来看,其实只要拆分成下面几步就可以做: 1)对题目进行单调性分析并且列出转移方程式。由于最近刷的题目早就知道是斜率优化所以没有分析单调性,而单调性的得出还是需要转移方程式辅助。 由于O(n)的平摊复杂度需要用到单调队列deque,我们需要针对缩进front指针和rear指针的两个while操作进行设计函数:(就以上面提及的标准函数为例) 2)为了使队列中的deq[L]弹出,就需要deq[L]不比dep[L+1]优: 设i,j,k满足条件jki,且i从j转移比从k转移优,则可以列出等式: 通过对该式子分离出带有i的变量,可以得到一个解题最重要的不等式(斜率优化的代码辣么短都是因为这个不等式的关系)。如果提取不出上述要求的不等式就不能用斜率优化dp解题。最后就能精简出一个函数g(x,y)满足g(x,y)=w[i]。但是我并不建议实际代码写成g(x,y)。 3)为了使队列中的deq[R]弹出,就需要deq[R]对于deq[R?1]和i都不优: 设a,b,c满足条件abci,如果满足: 则deq[R]不优。 因为当g(deq[R?1],deq[R])=w[i]时,deq[R?1]更优; 当g(deq[R?1],deq[R])w[i]时,g(dep[R],i)w[i],i更优。 所以一个斜率优化的dp的重点在于g(x,y)的推导(不是很喜直线方程的写法)以及两个缩进while语句的符号问题(反正只要考虑左侧的要求能够传递到右侧而不会改变即可)。 斜率优化dp应用举例: 斜率优化dp应用举例 BZOJ1010 HNOI2008 玩具装箱toy BZOJ1597 USACO2008 土地并购 HDU3507 Print Article BZOJ3437 小P的牧场 BZOJ1096 ZJOI2007 仓库建设 BZOJ1911 Apoi2010 特别行动队 BZOJ3675 Apio2014 序列分割 BZOJ1010 HNOI2008 玩具装箱toy Description P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京。他使用自己的压缩器进行压缩,其可以将任意物品变成一堆,再放到一种特殊的一维容器中。P教授有编号为1…N的N件玩具,第i件玩具经过压缩后变成一维长度为Ci。为了方便整理,P教授要求在一个一维容器中的玩具编号是连续的。同时如果一个一维容器中有多个玩具,那么两件玩具之间要加入一个单位长度的填充物。 形式地说如果将第i件玩具到第j个玩具放到一个容器中,那么容器的长度将为 x=j?i+∑jk=iCk。制作容器的费用与容器的长度有关,根据教授研究,如果容器长度为x,其制作费用为(x?L)2,其中L是一个常量。P教授不关心容器的数目,他可以制作出任意长度的容器,甚至超过L。但他希望费用最小。 我们可以得到满足样例的结果是分成{1},{2},{3,4},{5}四组,并且我们也可以发现这个表格是满足四边形不等式的。 首先考虑采用O(logn)的单调栈完成这个题目。我们考虑当前的dp(i)能够去更新哪些点,那么能够更新的点就会形成一段区间。 我们在栈中存储的值是每个不同的dp(i)所能更新的区间左端点,而右端点则是接下来的一个左端点(栈顶的右端点是n),可更新的最优区间就是[stk[i],str[i+1])。 查找结果的时候,我们只需要用二分查找找到包含该位置的最优区间;更新最优解的时候,始终考虑以该点作为更新点,可以更新到的离n的最远点在哪里。如果比当前的区间还优(即用当前区间的更新点不比用dp[i]优),将其覆盖;否则只会优于当前区间的部分区间,满足01性,同样通过二分查找可以找到结果。平摊的复杂度最大就是O(logn)。 我写O(nlogn)的时候反而比O(n)卡了更久,没有搞明白区间和更新点之间的关系,但是搞明白之后

文档评论(0)

jiayou10 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档