随笔分类 -  树形dp

摘要:"传送门" 题意 给一颗树,指定一个点,从这个点开始染色,每次只能在已染色点旁边染色,问从每个点开始染色分别能产生多少种染色序列。 题解 这个问题其实就是问一颗有根树的拓扑序列个数。 其实我们知道不是树的有向无环图的拓扑序列个数是个np问题,但是树的拓扑序列个数是一个可解的问题。$n$ 的全排列个数 阅读全文
posted @ 2020-03-30 10:01 BakaCirno 阅读(482) 评论(4) 推荐(1)
摘要:这套题真的有点传奇了,考了两次。虽然银川赛区名声不行,但这套题质量还是过硬的,所以来补一下,还是收获颇丰。 A. Maximum Element In A Stack 题意 实现一个支持查询当前栈中元素的最大值的栈。 题解 最大栈的模板题,相当于在原始栈的基础上再开一个栈存前缀最大值,pop操作与原 阅读全文
posted @ 2020-03-18 21:13 BakaCirno 阅读(189) 评论(0) 推荐(0)
摘要:"传送门" 题意 给一颗树,每个节点有 $1$ 或 $ 1$ 两种权值,问对于每一个点,包含它的联通块权值最大是多少。 题解 第一次写换根DP,其实并不难。相反 E 题记忆化搜索没想出来是真的煞笔。 就是一个最板的换根DP,先把 $1$ 视作根节点,算出每个点的最大子树。 然后再进行树形DP,每次向 阅读全文
posted @ 2020-03-13 09:17 BakaCirno 阅读(142) 评论(0) 推荐(0)
摘要:A. 狂小P猜密码 思路 从题意可知,十个数中有 $1 4$ 个 $1$ 时是存在方案的,其他情况答案都是 $0$。 已知一多重集,共 $n$ 个数,其中 $n_1$ 个 $a_1$,$n_2$ 个 $a_2$,...,$n_k$ 个 $a_k$。其全排列数为: $$ \frac{n!}{n_1!\ 阅读全文
posted @ 2019-12-23 13:50 BakaCirno 阅读(668) 评论(0) 推荐(0)
摘要:传送门 水的一批的树型dp,看题没看清以为是用最少关键点覆盖所有点,结果是点覆盖所有边 那就是个很简单的问题了(虽然点覆盖点也不难,但我还是写了好久,WA了) 设 fi,0 是 i 点不设防,fi,1 是 i 点设防情况下以 i 为根的子树的最小贡献。 因为如果一个点不设防,那么它的所有儿子必须设防 阅读全文
posted @ 2019-10-24 21:26 BakaCirno 阅读(115) 评论(0) 推荐(0)
摘要:传送门 给一个n个节点的树,边带权值,要求保留q条连通根节点1的边,求这q条边最大总权值是多少。 算是一个树形背包的模板题,可以将边权转化为子节点的点权来考虑分组背包,注意本题中如果要选子节点,其父节点也必须被选。 ps.没注意分组背包的写法wa了一发, 第一次for为枚举子树 第二次for为枚举当 阅读全文
posted @ 2019-10-18 10:04 BakaCirno 阅读(151) 评论(0) 推荐(0)
摘要:题目链接 题目大意:给定一棵树,设一个关键节点可以覆盖半径为2的范围,问要覆盖整棵树要至少几个关键节点。 这道题可以用贪心或者树形dp解决。因为最近我深感自己dp能力太弱,所有练练dp。 状态设计: f[p,0]代表将p的祖父覆盖需要的最少关键点数量 f[p,1]代表将p的父亲覆盖需要的最少数量 f 阅读全文
posted @ 2019-09-16 15:02 BakaCirno 阅读(192) 评论(0) 推荐(0)