随笔分类 -  树形DP

摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1561数组开小了越界,查了好久才查出来。。。GCC太能容忍错误了。。。坑!!!题意:给你一棵树,选中某一个节点花费1,得到它的价值,而且必须选中父节点才能选中子节点,问:在花费m下,最大价值为多少?最基本的树形DP... 阅读全文
posted @ 2014-01-29 13:40 xysmlx 阅读(249) 评论(0) 推荐(0)
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=2196题意:给你一棵树,求所有顶点到其它顶点的最大距离树形DP先求每个点到以它为根的子树的子节点的最大距离和次大距离(防止求它到父节点的最大距离中包含了它)然后求它到父节点的最大距离:如果到父节点的距离中包含了它,则用次大距离,否则用最大距离(这里要注意) 1 #pragma comment(linker, "/STACK:102400000,102400000") 2 #include 3 #include 4 #include 5 #include 6 #include 7 #in.. 阅读全文
posted @ 2014-01-29 12:19 xysmlx 阅读(213) 评论(0) 推荐(0)
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1520题意:给你一棵树,n节点,然后给你每个节点的权值,以及树的结构,要求不能同时选中父节点和它的直接子节点,让你找到权值最大的结果简单的树形DPdp[s][0]表示以s为根的子树在s点不选的情况下的最大权值dp[s][1]表示以s为根的子树在s点选的情况下的最大权值则:dp[s][0]=sigma(max(dp[ss][0],dp[ss][1]))(ss表示s的子节点)(子节点可选可不选)dp[s][1]=sigma(dp[ss][1])(ss表示s的子节点)(子节点必须选) 1 #pragma comm. 阅读全文
posted @ 2014-01-29 10:45 xysmlx 阅读(206) 评论(0) 推荐(0)
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1054题意:给你一棵树,n顶点,n-1条边,让你找到最少的顶点覆盖树上的所有边,即最小顶点覆盖可以用匹配做(二分匹配的版题),也可以用树形DPdp[s][0]表示以s为根的子树在s点不放的情况下的最小顶点数dp[s][1]表示以s为根的子树在s点放的情况下的最小顶点数则:dp[s][0]=sigma(dp[ss][1])(ss表示s的子节点)(子节点必须放)dp[s][1]=sigma(min(dp[ss][0],dp[ss][1]))(ss表示s的子节点)(子节点可放可不放)则min(dp[0][0],dp 阅读全文
posted @ 2014-01-28 23:41 xysmlx 阅读(235) 评论(0) 推荐(0)
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1011&PHPSESSID=nrt5ggjfqbhpk9au99mgcvm226树形DP题意:给你一颗树,n个顶点,n-1条边,m个花费,从根(编号1)出发,每个顶点有一定花费也有一定收获,并且经过的边不能再次经过,求最大收获是多少?典型的树形DP,dp[root][k]表示以root为根的子树花费k得到的最大收获,则转移方程为:dp[root][k]=max(dp[root][k],dp[root][k-i]+dp[t][i])(t为以root的子节点)注意特判m=0的情况(直接输出0) 1 // 阅读全文
posted @ 2014-01-28 21:13 xysmlx 阅读(205) 评论(0) 推荐(0)