随笔分类 -  动态规划 - 树形dp

摘要:Description 给定一颗 N 个点的树,树上的每个点或者是红色,或者是黑色。 每个单位时间内,你可以任选两个点,交换它们的颜色。 出于某种恶趣味,你希望用最少的时间调整结点的颜色,使得对于每个点,离它最近的黑色点与它的距离不超过 x。 Input 输入的第一行包含整数 N 和 x(1 <= 阅读全文
posted @ 2020-01-02 09:25 EM-LGH 阅读(138) 评论(0) 推荐(0)
摘要:这个状态的定义非常难想吧... $f[x][y]$ 表示以 $x$ 为根的子树中,其余点全部移到了应该移动到的位置,也建设了应该建设的仓库,而 $x$ 移动到 $y$ 的最小代价. 这里是事前钦定 $y$ 不建立仓库的. 那么,我们考虑如何从 $x$ 的儿子转移到 $x$: 若 $f[son][b] 阅读全文
posted @ 2020-01-01 09:14 EM-LGH 阅读(193) 评论(0) 推荐(0)
摘要:和【洛谷5115】挺像的. 都是统计信息的时候是包含两个树的,那就在一个树上边分治,另一个树上跑一个虚树dp就好了. 式子这么拆: $dep[i]+dep[j]-(dep[LCA(i,j)]+dep'[LCA'(i,j)]$ $\Rightarrow dep[i]+dep[j]-\frac{1}{2 阅读全文
posted @ 2019-12-28 14:25 EM-LGH 阅读(149) 评论(0) 推荐(0)
摘要:非常有趣的一道题.... code: #include <cstdio> #include <string> #include <algorithm> using namespace std; namespace IO { void setIO(string s) { string in=s+".i 阅读全文
posted @ 2019-12-25 14:59 EM-LGH 阅读(166) 评论(0) 推荐(0)
摘要:code: #include <cstdio> #include <string> #include <algorithm> #define N 500005 #define inf 0.0000000001 using namespace std; namespace IO { void setI 阅读全文
posted @ 2019-12-25 09:35 EM-LGH 阅读(138) 评论(0) 推荐(0)
摘要:自己 yy 了一个动态 dp 做法,应该是全网唯一用 LCT 写的. code: #include <bits/stdc++.h> #define ll long long #define lson tr[x].ch[0] #define rson tr[x].ch[1] #define setIO 阅读全文
posted @ 2019-12-05 20:25 EM-LGH 阅读(183) 评论(0) 推荐(0)
摘要:标签:树形dp,枚举,树的直径 一上来看到这个题就慌了,只想到了 $O(n^3)$ 的做法. 碰到这种题时要一步一步冷静地去分析,观察数据范围. 首先,$n\leqslant 5000$,所以可以先 $O(n)$ 枚举切断哪条边. 而如果暴力枚举连哪条边的话时间就是爆炸的,不妨冷静地分类讨论一下. 阅读全文
posted @ 2019-12-02 10:36 EM-LGH 阅读(149) 评论(0) 推荐(0)
摘要:一定要注意要乘阶乘,细节很多. code: #include <bits/stdc++.h> #define ll long long #define setIO(s) freopen(s".in","r",stdin) using namespace std; const int N=2007; 阅读全文
posted @ 2019-11-29 08:43 EM-LGH 阅读(136) 评论(0) 推荐(0)
摘要:这个题非常巧妙啊~ 阅读全文
posted @ 2019-11-20 08:59 EM-LGH 阅读(112) 评论(0) 推荐(0)
摘要:有一棵树,共有 $N$ 个节点,他会使用下列 $DFS$ 算法对该树进行遍历: starting_time是一个容量为n的数组current_time = 0dfs(v): current_time =current_time+1 starting_time[v] = current_time 将c 阅读全文
posted @ 2019-11-04 20:58 EM-LGH 阅读(120) 评论(0) 推荐(0)
摘要:题意:给定一颗树,树上每个点通电概率为 $q[i]$%,每条边通电的概率为 $p[i]$%,求期望充入电的点的个数. 期望在任何时候都具有线性性,所以可以分别求每个点通电的概率(这种情况下期望=概率 $\times 1$ )然后累加. 然而,直接求通电的概率不是很好求,所以可以求不通电的概率,然后 阅读全文
posted @ 2019-11-04 19:52 EM-LGH 阅读(173) 评论(0) 推荐(0)
摘要:题意: $mhy$ 住在一棵有 $n$ 个点的树的 $1$ 号结点上,每个结点上都有一个妹子。 $mhy$ 从自己家出发,去给每一个妹子都送一台电脑,每个妹子拿到电脑后就会开始安装 $zhx$ 牌杀毒软件,第 $i$ 个妹子安装时间为 $Ci$。 树上的每条边 $mhy$ 能且仅能走两次,每次耗费 阅读全文
posted @ 2019-11-02 15:35 EM-LGH 阅读(140) 评论(0) 推荐(0)
摘要:给一颗树,$1$ 号节点已经被染黑,其余是白的,两个人轮流操作,一开始 $B$ 在 $1$ 号节点,$A$ 选择 $k$ 个点染黑,然后 $B$ 走一步,如果 $B$ 能走到 $A$ 没染的节点则 $B$ 胜,否则当 $A$ 染完全部的点时,$A$ 胜。求能让 $A$ 获胜的最小的 $k$ 我们发现 阅读全文
posted @ 2019-10-31 00:24 EM-LGH 阅读(155) 评论(0) 推荐(0)
摘要:据说dfs会爆栈,写一个 BFS 序更新就好了~ 阅读全文
posted @ 2019-09-30 14:34 EM-LGH 阅读(138) 评论(0) 推荐(0)
摘要:Code: 阅读全文
posted @ 2019-09-24 16:00 EM-LGH 阅读(124) 评论(0) 推荐(0)
摘要:$k$ 十分小,直接暴力维护 $1$~$k$ 的答案即可. 然后需要用父亲转移到儿子的方式转移一下. Code: 阅读全文
posted @ 2019-09-24 14:14 EM-LGH 阅读(141) 评论(0) 推荐(0)
摘要:就是细节多一些,思路都非常常规. Code: 阅读全文
posted @ 2019-09-23 19:58 EM-LGH 阅读(131) 评论(0) 推荐(0)
摘要:感觉很多树上难以直接求解的问题都可以转化为动态规划问题并进行求解$.$ 令 $f[x],g[x]$ 分别表示以 $x$ 为根的子树不想上延申,向上延申的方案数$.$ 这里向上延申指的是会有其他子树的节点与该点子树中某个点颜色相同并进行配对$.$ 考虑转移: $f[x]=g[x]=\prod_{v\i 阅读全文
posted @ 2019-09-10 16:50 EM-LGH 阅读(298) 评论(0) 推荐(0)
摘要:Description Input Output 求一棵树编号序列不同的方案数: 令 $f[u],g[u]$ 分别表示 $u$ 选/不选 的方案数. 则 $f[u]=\prod_{v\in son[u]}g[v]$,$g[u]=\prod_{v\in son[u]}g[v]+f[v]$. 然而如果要 阅读全文
posted @ 2019-08-19 17:16 EM-LGH 阅读(250) 评论(0) 推荐(0)
摘要:Description Input Output 其实就是给出两颗树,求一种两种树同构的方式,使得不同颜色个数最少$.$树的重新构建,其实就是指定不同的点为根节点$.$ 好在树的重心有一个重要的性质:在一颗树上只有一个/两个点之间又一条边$.$ 我们可以把第一棵树随便一个重心为根,求出每个点为根节点 阅读全文
posted @ 2019-08-19 11:29 EM-LGH 阅读(191) 评论(0) 推荐(0)