第六章 动态规划总结.pdf

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
动态规划总结 河北省第二中学 李博 一. 树的动态规划。 树的dp 一般来说用记忆化搜索好写,但是会有栈溢出的危险。 类型1:所描述的树由于边上没有制约关系,可以转化成左孩子右兄弟的二叉树,然后进行 动态规划。 代表题目:选课(ctsc97)、奶牛农场(bjoi02) 奶牛农场:它实际上属于第三类问题,不过由于父子间的边无权,可以转化成此类,但实际 上还是3中的方法。F(I,j)=min{f(left(i),k)+f(right(i),j-k)}f(left(i),0)=1{表示I以下不要的话就 要断路} 类型2:确定某最优位置等,利用树的性质,开始任选一点,从此点开始贪心或动归来进行 移动。主要部分是相邻点的转移。 代表题目:电脑网络(ural1056)、粮仓(sgoi13)、校园网改造(ahoi03) 对于前两个题可以证明任意点的相邻点有且只有1个点满足选此点比当前点更优或一样,如 果一样那么这两个点都是最佳点。这样的树最多有2个最佳点。对于《校园网改造》,很明 显的树的dp 问题。有位高手用记忆化搜索做,结果出了 stack over 的问题。。。我建议用递 推的方法做。先从根宽搜拓展出序列,再dp。要算出点i 和其晚辈节点的总节点数、总延时 pi,假如在i的子节点中选一个点j,使得(i,j)为光缆,且剩下的光缆由j及其晚辈节点中组 成的最优值和次优值和位置 lm1,lm2,m1,m2。则以i 点及其晚辈节点组成光缆的最优解为 pi-pm1-pm2-(它们和i 之间连边的值+lm1+lm2 只要枚举每个i即可。求lm1,lm2 要注意,有 位高手就出错了。 类型3:多叉树的dp,f(I,j)第I个点取值j的情况,只要从左到右对它的每个孩子进行归并 就可以出解,由于除根外,每个点的数组都被dp一次(只有一个父亲),时间复杂度o(n^3)。 代表题目:Tinux 系统(hnoi02)、奶牛农场(bjoi02)、贪吃的九头龙(noi2002) 贪吃的九头龙:f[i,0,j]=min{f[i,0,t]+f[si,0,j-t]+c(i,si),f[i,0,t]+f[si,1,j-t]} [i,1,j]=min{f[i,1,t]+f[si,0,j-t],f[i,1,t]+f[si,1,j-t]+(c(i,si)or0)(*n=2,first,else last*)} Tinux系统:对目录按耗时由大到小排序,f[i,j]表示I个文件只许用前j个目录。 f[i,j]=min{f[i-1,j-1]+cj,(i/j=1) f[i-t,j-1]+f[t,k]+cj*t^2(i/j=t=i)} 由于每个subtree 的结构相同,复杂度为o(kn^2)。可证明对于确定的j,1=I=n/k*j 才 需要保存。 优化要从细处开始,一个排序,可以使方程简化,空间节省。如果从小到大排就徒劳了。 类型4: 我认为这是个新类型的题。以往的题都是确定了父节点的状态,再找相应子节点 的状态来计算,此题却是事先父节点的状态不明,需要由子节点来共同决定。而想问题时先 假设父节点已确定,那么如果子节点与父节点状态相同就要换一个状态,也就是第二好的状 态,而第三好。。。的都没必要算。那么对于父节点的任何状态,如果和每个子节点的第一状 态都不同,只要考虑最小的两个,否则必是子节点第一状态中的某个。这样dp可以推出父 节点最好的两个状态是什么。由于每个点都被考虑一次,考虑别的一次,所以时间复杂度是 o(n)。 代表题目:宝石问题(boi2003) 类型5:三角剖分树,在poi 中多次出现(only3times…),用三个顶点均是凸多边形顶点的 三角形把凸多边形划分成一些区域。以每个三角为顶点,与之有边重合的三角形之间连边, 形成一棵度最多为3的无根树,它具有很良好的性质。 代表题目:多边形之战(poi99){见数学问题总结}、小岛(poi01)、多边形(poi98){利用 三角剖分树,有o(n)的perfect 算法:} 小岛:题目让求出两国间相邻情况以及边界的收费情况,似乎没什么思路,联想一下多边形 之战,把题目抽象成树试试?成了!是棵除根节点外非叶字节点有两个孩子的树。显然min= 两点到1的距离和-两点间距离最小的一定在两棵不同的子树上。且 min/2 是父亲与其父亲 边的权值。这样问题解决,时间复杂度o(n^3)。 多边形:做了island 后,我重看了这个题,想到了用树形结构解决这个 问题。第一步当然是建树,

文档评论(0)

kehan123 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档