随笔分类 -  动态规划——树型DP

摘要:题目链接 2017 CCPC Hangzhou Problem E 题意 给定一棵树,每个点有一个权值,现在我们可以选一些连通的点,并且把这点选出来的点的权值相加,得到一个和。 求$[1, m]$里面哪些值可以被表示成选出来的点的权值和。用$01$序列的方式输出。 重现赛赛场上的我英勇无畏,大胆做$ 阅读全文
posted @ 2018-04-16 17:58 cxhscst2 阅读(775) 评论(3) 推荐(0)
摘要:题目链接 Round 322 Problem F 题意 给定一棵树,保证叶子结点个数为$2$(也就是度数为$1$的结点),现在要把所有的点染色(黑或白) 要求一半叶子结点的颜色为白,一半叶子结点的颜色为黑,求边权和的最小值。 若一条边连接的两个点颜色不一样,则该条边边权为$1$,否则为$0$。 考虑 阅读全文
posted @ 2018-03-11 23:59 cxhscst2 阅读(193) 评论(0) 推荐(1)
摘要:题目链接 The 17th Zhejiang University Programming Contest Problem B 题意 给定一棵树,现在要加一条连接$1$(根结点)和$x$的边,求加了这条边之后,所有点到根结点的距离的和的最小值。 输出这个最小值即可。 当加的这条边为$1-x$时,$x 阅读全文
posted @ 2018-03-05 14:05 cxhscst2 阅读(253) 评论(0) 推荐(0)
摘要:题目链接 Codeforces Round #465 (Div. 2) Problem E 题意 给定一个表达式,然后用$P$个加号和$M$个减号填充所有的问号(保证问号个数等于$P + M$) 求可以形成的表达式的最大值。 先把表达式转成一棵树,然后在树上DP。 题目保证了$min(P, M) < 阅读全文
posted @ 2018-02-28 22:18 cxhscst2 阅读(389) 评论(0) 推荐(0)
摘要:题目链接 Black White Tree 树型DP,设$f[i][j]$为以$i$为根的子树中大小为$j$的连通块中可以包含的最小黑点数目。 $g[i][j]$为以$i$为根的子树中大小为$j$的连通块中可以包含的最大黑点数目。 $F[i]$为大小为$i$的连通块中可以包含的最小黑点数目 $G[i 阅读全文
posted @ 2017-09-26 21:25 cxhscst2 阅读(249) 评论(0) 推荐(0)
摘要:题目链接 Valid Sets 题目要求我们在一棵树上计符合条件的连通块的个数。 满足该连通块内,点的权值极差小于等于d 树的点数满足 n <= 2000 首先我们先不管这个限制条件,也就是先考虑d为正无穷大的时候的情况。 我们要求出树上所有连通块的个数。 这个时候我们令f[i]为以i为根的子树中的 阅读全文
posted @ 2017-08-23 16:24 cxhscst2 阅读(372) 评论(0) 推荐(0)
摘要:题目链接 课程学分总数 很基础的树型DP。注意输入数据可能是森林而不是完整的一棵树。 题目链接 课程学分总数 那么给所有没有祖先的点加一个公共的根就好了。 #include <bits/stdc++.h> using namespace std; #define rep(i, a, b) for ( 阅读全文
posted @ 2017-07-20 20:28 cxhscst2 阅读(255) 评论(0) 推荐(0)
摘要:题目链接 Tree $dp[x][i]$表示以x为根的子树中x所属的连通快大小为i的时候 答案最大值 用$dp[x][j]$ * $dp[y][k]$ 来更新$dp[x][j + k]$。 (听高手说这类题的套路其实都差不多) 因为这题输出数据会很大所以用Java…… QAQ 阅读全文
posted @ 2017-05-02 21:08 cxhscst2 阅读(248) 评论(0) 推荐(0)
摘要:题目链接 Coloring Brackets 考虑树型DP。(我参考了Q巨的代码还是略不理解……) 首先在序列的最外面加一对括号。预处理出DFS树。 每个点有9中状态。假设0位不涂色,1为涂红色,2为涂蓝色。 0:0 0 1:0 1 2:0 2 3:1 0 4:1 1 5:1 2 6:2 0 7:2 阅读全文
posted @ 2017-04-27 19:15 cxhscst2 阅读(258) 评论(0) 推荐(0)
摘要:题目链接 Bear and Tree Jumps 考虑树形DP。$c(i, j)$表示$i$最少加上多少后能被$j$整除。 在这里我们要算出所有$c(i, k)$的和。 其中$i$代表每个点对的距离,$k$为输入的$k$值。 $f[i][j]$表示以$i$为根结点,深度对$k$取模为$j$的点的个数 阅读全文
posted @ 2017-04-11 22:37 cxhscst2 阅读(382) 评论(0) 推荐(0)
摘要:题目链接 Mahmoud and a xor trip 树形DP。先考虑每个点到他本身的距离和,再算所有点两两距离和。 做的时候考虑二进制拆位即可。 阅读全文
posted @ 2017-04-07 10:21 cxhscst2 阅读(194) 评论(0) 推荐(0)
摘要:题目链接 HOTELS 依次枚举每个点,以该点为中心扩展。 每次枚举的时候,从该点的儿子依次出发,搜完一个儿子所有的点之后进行答案统计。 这里用了一个小trick。 阅读全文
posted @ 2017-03-28 20:35 cxhscst2 阅读(273) 评论(0) 推荐(0)
摘要:题目链接 Distance in Tree $k <= 500$ 这个条件十分重要。 设$f[i][j]$为以$i$为子树,所有后代中相对深度为$j$的结点个数。 状态转移的时候,一个结点的信息由他的儿子转移过来。 那么一边进行状态转移,一边统计答案即可。 阅读全文
posted @ 2017-03-08 20:39 cxhscst2 阅读(162) 评论(0) 推荐(0)
摘要:D. Chloe and pleasant prizes time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Generous sp 阅读全文
posted @ 2017-02-19 20:30 cxhscst2 阅读(364) 评论(0) 推荐(0)