随笔分类 -  树形dp

摘要:题目链接:http://codeforces.com/contest/161/problem/D 题意:求所有距离为k的点对(u,v) 的数量 思路:dp[u][i] 代表以u为根的子树 距离为i 的数量, 主要是考虑如何不重复的计算 可以先把每一棵子树的先记录 用乘法,然后再把贡献放到u上,每次保 阅读全文
posted @ 2021-03-13 11:09 canwinfor 阅读(41) 评论(0) 推荐(0)
摘要:题目链接:https://codeforces.ml/problemset/problem/1083/A 题意:给定一棵树 每个节点和每条边都有权值,问如何选择一条路径使得 节点的权值-边权值最大, 并且在u-> v的过程中 权值-边权一定要≥0 思路:用树形dp dp[i] 为以i为根能走到的最远 阅读全文
posted @ 2021-02-22 18:52 canwinfor 阅读(47) 评论(0) 推荐(0)
摘要:题目链接:https://www.luogu.com.cn/problem/P2014 思路:第一种写法直接以0为根 转换成树上背包 dp[i][j] 代表以i为根 取j个子节点的最大值 注意的是 如果要拿子树上的点,就必须拿到该子树根 所以dp[i][j] 是不取 i 这个根的 第二种写法是 dp 阅读全文
posted @ 2020-11-25 12:28 canwinfor 阅读(133) 评论(0) 推荐(0)
摘要:题目链接:https://www.luogu.com.cn/problem/P2015 思路:树上背包问题 dp[i][j]为 以i为根 留j根树枝的最大值, 转移的时候枚举当前拿多少根树枝 以及子树拿多少根树枝即可 i过大的状态也不需要管 因为不会用到 没有影响 注意的是 当前的结点连着子树结点的 阅读全文
posted @ 2020-11-25 00:13 canwinfor 阅读(148) 评论(0) 推荐(0)