首页 > 其他 > 详细

今日份水题2018.11.2

时间:2018-11-03 01:20:47      阅读:171      评论:0      收藏:0      [点我收藏+]

这几天想突破一下树形DP,这也是高中时候一直没能搞定的。

今天先来两道简单的水一下。

HDU2196 Computer 给一棵树,求树中每个点离其他点最远的距离。每个点第一遍DFS记录能达到的最远距离dp1[]和次远距离dp2[],之后第二遍dfs,每次先更新当前节点答案然后再向下搜。如果当前节点位于父节点答案所在链上,即dp1[j]+w[i,j]=dp1[i],此时又分两种情况1: dp1[j]<dp2[i]+w[i,j],则dp2[j]=dp1[j],dp1[j]=dp2[i]+w[i,j],2:dp1[j]>=dp2[i]+w[i,j],则dp1[j]不变,dp2[j]=max(dp2[j],dp2[i]+w[i,j])  剩余情况就是当前节点不在父节点答案所在链上,这时dp2[j]=max(dp1[j],dp2[i]+w[i,j]),dp1[j] = dp1[i]=w[i,j]。注意两个数组的赋值。

POJ2378 Tree Cutting 给一棵树,求出树中所有满足条件的点:将这个点除去,剩余所有联通块大小不超过总结点数的一半。第一次dfs统计子树大小,第二次dfs时,若子树小于一半节点,直接返回,遍历所有子节点,记一个flag,子树中如果出现大于总结点一半的,flag=false,并且搜索该子树,碰到等于一半的可以直接记录答案。最后搜索完所有的子节点,如果flag=true,将本节点计入答案。

永远忘不了被一道各位大佬称之为“简单树形DP”的JLOI2016侦察守卫虐到怀疑人生

今日份水题2018.11.2

原文:https://www.cnblogs.com/hzs2000/p/9899116.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!