文章分类 -  acm动态规划-树形dp

CodeForces 274B Zero Tree :每次选包含1节点的一棵子树,将该子树所有值都+1或者-1最少多少步可以使树值全部为0 :树型dp
摘要:将1设为树根节点,接下来就好想了,因为更新一个点对应到1的路全部都要更新对于一个节点u,dfs他的所有儿子节点,返回最大需要+1的操作和最大需要-1的操作再接合自身返回给父亲节点+1 -1的最大操作最后结果就是1节点+1和-1的最大操作和 1 #include 2 #include 3 #inclu... 阅读全文

posted @ 2015-03-28 01:12 xiao_xin 阅读(681) 评论(0) 推荐(0)

hdu4607 树直径(两次dfs求向下最远距离及另一方向最远距离相加)
摘要:之前有想过树的直径咋求,不过一直没仔细去考虑。昨天做了hdu2196 今天突然想到如果把max(up[i]+dis1[i])求出来不就是直径maxx嘛==随后百度了一下看到别人大多数是两次bfs,我从hdu上找了一道题目,果然是可以的。思想应该是一样的吧,都是求两条最长路。这题用到最长路还有:1.k... 阅读全文

posted @ 2015-01-19 16:25 xiao_xin 阅读(147) 评论(0) 推荐(0)

hdu2196 树形dp(求距离树上每个点最远的距离)
摘要:一开始就想到了树形dp,然后下午就一直在做其他事中思考==首先,我用一个dfs来找每一个节点所对应的树中到该节点最远距离dis1[],这个很简单,然后。。。。。。我再思考如何计算这个点到他的兄弟和父亲最远。。。。。。好难描述我的想法历程,语文好差T_T==大概就是这样,我在刚才的dfs中记录了最远的... 阅读全文

posted @ 2015-01-18 20:52 xiao_xin 阅读(367) 评论(0) 推荐(0)

hdu1561 树形dp+背包(攻打某点必须要攻打上司点,问攻打最多m点所获得的收益)
摘要:有一个技巧如何把森林转化成树?把所有无根点连向一个统一的根。 1 #include 2 #include 3 #include 4 using namespace std; 5 int now,m,head[205],next[205],point[205],dp[205][205]; 6 void... 阅读全文

posted @ 2015-01-08 16:05 xiao_xin 阅读(133) 评论(0) 推荐(0)

bzoj 1026 3029 数位dp
摘要:下午和cp,杰哥在一起做bzoj,交了自己的bzoj处女交,水了两道数位dp,前段时间学的数位dp模板好呀TUT1026:http://www.lydsy.com/JudgeOnline/problem.php?id=1026l到r之间相邻数绝对值差大于等于2数的个数本来开三维记录当前位,前一位,有... 阅读全文

posted @ 2014-12-27 17:18 xiao_xin 阅读(126) 评论(0) 推荐(0)

hdu1520 简单树形dp
摘要:1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 int son[6005],dp[6005][3],father[6005],f[6005][6005],a[6005]; 7 void dfs(int x) ... 阅读全文

posted @ 2014-10-30 23:30 xiao_xin 阅读(72) 评论(0) 推荐(0)

hdu2412树形dp
摘要:#include#include#include#includeusing namespace std;int son1[205],f[205][205],dp[205][2],dup[205][2],hash[205];char s[205][105],s1[105],s2[105];void d... 阅读全文

posted @ 2014-07-16 14:25 xiao_xin 阅读(127) 评论(0) 推荐(0)

hdu1011 树形dp(背包)
摘要:1 #include 2 #include 3 int max(int a,int b) 4 { 5 if (a>b) return a; 6 return b; 7 } 8 int m; 9 int dp[150][150],son[150],bug[150],pos[150],... 阅读全文

posted @ 2014-07-16 14:16 xiao_xin 阅读(108) 评论(0) 推荐(0)

导航