随笔分类 -  2.3**树形DP

[Codeforces375E]Red and Black Tree
摘要:Problem 给定一棵有边权的树。树上每个点是黑或白的。黑白点能两两交换。 求符合任意一个白点到最近黑点的距离小于等于x时,黑白点交换次数最少为多少。 Solution 明显是一题树形DP。我们先跑一边Floyd。 F[i][j][k]表示以i为根的子树中,连向结点j,子树中已经确定有k个是黑点所 阅读全文
posted @ 2017-11-04 22:54 WizardCowboy 阅读(303) 评论(0) 推荐(0)
[Codeforces178F2]Representative Sampling
摘要:Problem 给定n个字符串Si,任意选出k个字符串Ai,使得其中任意两个字符串lcp之和最大。 Solution 建一棵trie树,枚举每一个节点对答案的贡献,树形dp,时间复杂度像是O(N^3) 由于每个点对只在自己LCA的时候枚举到贡献,所以是O(N^2) Notice 这道题分析时间复杂度 阅读全文
posted @ 2017-11-04 22:15 WizardCowboy 阅读(345) 评论(0) 推荐(0)
[BZOJ1596]电话网络
摘要:Problem 给你一棵树,可以在每个点上选择造塔或不造,每座塔可以覆盖这个节点和相邻节点,问覆盖整棵树的最小塔数。 Solution 看到这道题的第一眼,我就觉得是一题贪心题,但看见出题的时候分类在树形DP,于是就没仔细想贪心。 树形DP:f[u][0]表示u被其儿子覆盖,f[u][1]表示u上有 阅读全文
posted @ 2017-11-04 22:04 WizardCowboy 阅读(129) 评论(0) 推荐(0)
[BZOJ3167]Sao
摘要:Problem 给你n个任务,n 1个关系,ab代表a在b前或者a在b后 问你有几种拓扑序 Solution f[i][j]表示第i个节点前有j个节点的方案数 设当前节点为x,儿子节点为s,若x依赖于s,那么 若s依赖于x,那么 Notice 要预处理出C数组 Code 阅读全文
posted @ 2017-11-01 13:57 WizardCowboy 阅读(168) 评论(0) 推荐(0)
[Codeforces543D]Road Improvement
摘要:Problem 刚开始每条边都是坏的,现在要选取一个点使得其他点到这个点的路径上最多只有一条坏路,问至少要修好多少条边 Solution 如果以1为根,那么是个简单的树形DP 设根从u转移到v,那么u的父亲会变成v(f[u]需要删除v的贡献), u的原来的父亲会变成u的孩子(f[u]需要加上原父亲的 阅读全文
posted @ 2017-11-01 09:40 WizardCowboy 阅读(155) 评论(0) 推荐(0)
[BZOJ2427]软件安装
摘要:Problem 每个软件都要安装某些软件才能安装,而且都有体积和价值,求安装的价值最大值 Solution 对于每个环,我们可以知道必须全部一起取或者不取,因此我们先用Tarjan缩点 然后我们用一个树形DP就可以解决了 Notice 注意这颗树是如果一个节点没取,后面就都不能取了 Code 阅读全文
posted @ 2017-10-30 20:17 WizardCowboy 阅读(157) 评论(0) 推荐(0)
[Codeforces440D]Berland Federalization
摘要:Problem 给你一棵树,最少删掉哪些边,能使得余下的至少有1个大小刚好为k的残树。 1 ≤ k ≤ n ≤ 400 Solution 用f[i][j]表示以i为根有j个节点的最少删边数量 因为此题要输出删除的边 v[i][j]表示以i为根删掉j个节点需要删去的边对应的(点u,该u点还需要删去的边 阅读全文
posted @ 2017-10-18 23:35 WizardCowboy 阅读(206) 评论(0) 推荐(0)