上一页 1 ··· 51 52 53 54 55 56 57 58 59 ··· 75 下一页
摘要: 原题链接 考察:树形dp+二分 这道题正解思路有点像二分典型题搬石头.本蒟蒻是没想出来... 思路: 这道题有3个限制条件: 裁取的边要使得叶子不能到1. 裁取的边和要<=m 裁取的边的权值要尽量小. 直接递推根本递推不出来,如果设置叶子节点的f[u] = INF,那么叶子结点到父节点之间的边权值一 阅读全文
posted @ 2021-02-17 16:36 acmloser 阅读(45) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:树形背包dp 本来不想写这篇的题解,因为和前面的题重复了...但是WA了3次才对,还是写一下吧.. 思路: 将每20个虫子看成财宝的一个体积.m是背包的体积.这就是带体积的树形背包问题了.但是要注意的是,当某个洞穴虫子=0,我们还需要派人去拿.这个处理很简单,让f[u][0]=0就可 阅读全文
posted @ 2021-02-17 14:16 acmloser 阅读(49) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:树形dp 树的重心变种题 重心定义:重心是指树中的一个结点,如果将这个点删除后,剩余各个连通块中点数的最大值最小,那么这个节点被称为树的重心。(不止一个) 模板题 树的重心 思路: 把树的某个点删去后,剩余部分是不包含父节点的子节点连通块.已经删去点的父节点连通块.通过dfs可以求出 阅读全文
posted @ 2021-02-17 12:36 acmloser 阅读(36) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:树形dp 本蒟蒻是完全没思路,看了网上的题解思路普遍是: 对于一棵树,每拆掉一条边就形成一条链.对于一个有多子节点的结点u,我们可以保留父节点到u的边和u到一个子节点的边.也可以保留两个子节点的边去掉其他的边.看了大部分题解都是默认去掉父节点边是最优解. 本蒟蒻是没想出来证明 = = 阅读全文
posted @ 2021-02-17 01:22 acmloser 阅读(21) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:树形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) 编辑
上一页 1 ··· 51 52 53 54 55 56 57 58 59 ··· 75 下一页