随笔分类 - acm动态规划-树形dp
摘要:src:http://acm.hdu.edu.cn/showproblem.php?pid=5834 题意:给定一棵树,有点权和边权,点权上的价值只能取一次,多次通过边要花费多次边权,求以每个节点为起点能获得的最大价值。 思路:第一次dfs,得到各节点往下的最大价值,然后第二次dfs考虑父节点的影响
阅读全文
摘要:src:http://acm.hdu.edu.cn/showproblem.php?pid=4044 dp[u][i]为u不选的时候花i元的最优解,这题考虑dp[ u ][ i ]时对于子树根u选不选分开讨论,一种方法是定义状态为dp[ u ][ i ][ 0/1 ]分别表示选/不选,但是这样转移方
阅读全文
摘要:src : http://poj.org/problem?id=3140 题意:选择一条树边断开,使得分成的两部分的总点权差最小,输出最小值 就直接预处理每一个点及其子树的总点权 枚举一个点和其父亲断开,取个最优值就好了 注意long long
阅读全文
摘要:src:http://acm.hdu.edu.cn/showproblem.php?pid=3586 题意:给一个限制m,切断的路径权值和不超过m,单个边权值也不超过k,求最小的k使得所有叶子和根不相连 二分一个k 对于一个确定的k,dp[u]表示u的叶子全部和u分离需要的最小花费 考虑叶子节点:d
阅读全文
摘要:src: http://acm.hdu.edu.cn/showproblem.php?pid=4003 思路:dp[u][k]表示遍历完u的子树后,有k个机器人没有回到u。 对于结点u,如果机器人回来的话,派几个都是一样,所以考虑不回来的数量,而k决定了不回来个数的上限,另外 ,机器人最终都会停在叶
阅读全文
摘要:src:http://poj.org/problem?id=1947 ac代码:
阅读全文
摘要:src:http://acm.hdu.edu.cn/showproblem.php?pid=1011 dp[u][i]表示在结点u,消耗i军队获得的最大值。注意建树时用双向边,因为结点1不一定是树根!!! 注意m==0时特判,这个必需要,有代价为0的房间,M=0则无法获得,样例为2 0 0 20 0
阅读全文
摘要:src:http://poj.org/problem?id=1155 思路:dp[u][i]指子树u取i个叶子的最优值,Max(dp[u][i],dp[u][i-k]+dp[v][k]-edge[i].v),注意是从前几个阶段转移后的最优值中选(例codeforces219D(树形dp) ,dp[u
阅读全文
摘要:src:https://vjudge.net/problem/CodeForces-219D 两次dfs的特点,状态的转移要用到父节点的状态,所以分支节点在第二次dfs中才能用到父节点,而根节点在第一次dfs中就算出dp值了,因为它没有父节点,所以它的值在第二次dfs中传下去!!! 树形dp一般解决
阅读全文
摘要:src: http://acm.hdu.edu.cn/showproblem.php?pid=2196 解答:https://blog.csdn.net/shuangde800/article/details/9732825 dfs2中,用父节点的dp最大值或次大值来规划子节点的各状态的值!!! 其
阅读全文
摘要:src: http://acm.hdu.edu.cn/showproblem.php?pid=1520 ac代码:
阅读全文
摘要:src:http://acm.hdu.edu.cn/showproblem.php?pid=1561 ac代码:
阅读全文
摘要:src: http://poj.org/problem?id=2486 思路:就像多重背包一样,dfs过子树后,子树就有了各种大小的代价,然后动态规划根的大小即可; ac代码:
阅读全文

浙公网安备 33010602011771号