摘要: 原题链接 考察:树形dp(?) 思路: f[i]表示i往下(包括i)的点权值和.对比学生总和sum-f[i]与f[i]的大小即可. 这题貌似和m没多大关系.m一定=n-1. 1 #include <iostream> 2 #include <cstring> 3 #include <cstdio> 阅读全文
posted @ 2021-02-16 22:19 acmloser 阅读(56) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:树形dp 关于本题的相关题目 10. 有依赖的背包问题 和 1074. 二叉苹果树 都是一个套路. 思路: 有依赖的背包问题套模板题.关于几点需要再修正: 绝对不要在dfs遍历连接点的时候+w[u].因为f[u][j] = max(f[v][k]+f[u][j-k],f[u][j]) 阅读全文
posted @ 2021-02-16 19:41 acmloser 阅读(80) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:树形dp 这道题战略游戏要求看到所有的边,本题要求看到所有的点 没想出来,参考了大佬的思路 照搬大佬的思路: 设树上某点u能被看见,这个点要么自己安插士兵,要么父节点安插士兵,要么子节点安插士兵.设f[u,st]表示u的st状态的最小花费.st==0时,它u被父节点看见,st==1, 阅读全文
posted @ 2021-02-16 17:22 acmloser 阅读(75) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:树形dp 思路: 因为要观察到所有的边,所以每条边上的点至少要放一个士兵,对于某子树的根u,f[u][1] = min(f[v][1],f[v][0]),f[u][0] = f[v][1]. md,我是zz,看成要看到所有的点,导致这道题我没想出来= = 1 #include <io 阅读全文
posted @ 2021-02-16 12:42 acmloser 阅读(74) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:树形dp 思路: 树形背包的时间复杂度是O(n3) 按划分给子节点的体积来分配集合.思路与苹果树大体相同.关于几个问题需要解释下: 为什么不和苹果树那题一样在遍历点的时候+w[u]. 答: k不一定能装下,会使得背包里的价值多了.除此之外,f[u][j] = f[u][j-k]+f[ 阅读全文
posted @ 2021-02-16 03:22 acmloser 阅读(26) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:树形dp 求保留边后树边权值最大和 思路: 因为选择子节点必须选择父节点,对于一个父节点u,它的两个子节点v1,v2.v1可以选择m条边,那么v2就能选择q-m-1-1条边对于每个一个树的结点,都能这样枚举,所以动态转移方程为f[u][j] = max(f[u][j],f[u][j- 阅读全文
posted @ 2021-02-16 00:42 acmloser 阅读(27) 评论(0) 推荐(0) 编辑