摘要:
题意: 给出一个N个点的树,找出一个点来,以这个点为根的树时,所有点的深度之和最大 发现从根从某个位置移到它的⼀一个⼦子树得出 ans 只要 O(1) 的时间 定义 f[u] 代表以 u 为根结点的深度和 假设 v 是 u 的儿子 ,那么 f[v] 其实就是 v 的子树的深度全部 -1 ,其他节点的 阅读全文
摘要:
题目大体上也算是一个树上背包的问题,只不过有个细节需要特别注意一下 父亲如果想要儿子的苹果,那么父亲和儿子之间必须要连接起来 设 f[u][j] 代表以 u 为根节点 保留 j 条边的最大价值 根据树上背包的转移方程我们很容易知道 f[u][j] = max(f[u][j] , f[v][k] + 阅读全文
摘要:
树上背包: 树形背包就是原始的树上动归+背包,一般用来处理以一棵树中选多少点为扩展的一类题,基本做法与树上dp无异,不过在状态转移方程中会用到背包的思想。 它基本上是这个样子的: 存图),然后dfs进去补全子节点的信息,f数组的意思是以fa为中转点,找出fa往下的可取1~j个点时各自的最大收益。 f 阅读全文