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

摘要:题意:有一棵含有n个结点(n<=300)的根树,树上每个结点上的权值是从[0,ai](ai<=1e9)区间内随机的一个实数,问这棵树能形成一个最小堆的概率。 由于结点取值范围是1e9而且是实数,所以枚举权值dp自然是行不通的了,但可以从函数的角度上考虑。 首先需要了解两个概念: CDF:分布函数,记 阅读全文
posted @ 2019-08-22 12:03 jrltx 阅读(425) 评论(0) 推荐(0)
摘要:题意:一棵树上有n(n<=50000)个结点,结点有k(k<=10)种颜色,问树上总共有多少条包含所有颜色的路径。 我最初的想法是树形状压dp,设dp[u][S]为以结点u为根的包含颜色集合为S的路径条数,然后FWT(应该叫FMT?)搞一下就行了,复杂度$O(nk2^k)$。奈何内存太大,妥妥地ML 阅读全文
posted @ 2019-03-19 12:55 jrltx 阅读(412) 评论(0) 推荐(0)
摘要:问题:有一课含有n(n<=2e5)个结点的数,有m(m<=1000)个结点是红色的,其余的结点是黑色的。现从树中选若干数量的结点,其中红色的恰有k个,并且每个结点都不是其他任何另一个结点的后代,分别求出k=0,1,2,...,m的选法种数。(树根为1) 又是一道树形背包问题。只不过这个问题和普通的树 阅读全文
posted @ 2019-03-14 16:30 jrltx 阅读(260) 评论(0) 推荐(0)
摘要:题目链接 问题:有n个人,最多选k个,如果选了某个人就必须选他指定的另一个人,问最多能选多少个人。 将每个人所指定的人向他连一条单向边,则每一个点都有唯一的前驱,形成的图是个基环树森林,在同一个强连通分量里的点要么全选,要么全不选。 首先用Tarjan算法将每个强连通分量(基环树上的环)缩成一个点, 阅读全文
posted @ 2019-03-14 11:20 jrltx 阅读(234) 评论(0) 推荐(0)
摘要:题意:有一棵树,树上每个结点都有一个权值,求恰好包含k个结点的子树的最大权值。 设dp[i][j]为以结点i为根的树中包含j个结点的子树的最大权值,则可以把这个结点下的每棵子树中所包含的所有子树的大小当做物品的重量,对应的最大权值当做物品的价值,则相当于在它的每颗子树的所有物品中任选一个进行更新,对 阅读全文
posted @ 2019-03-13 20:37 jrltx 阅读(274) 评论(0) 推荐(0)
摘要:题目链接 题意:给你一个树形图,让你把其中若干个结点染成黑色,其余的染成白色,使得任意一个白色结点都恰好与一个黑色结点相邻。 解法比较容易,和树上的最大独立集类似,取一个结点作为树根,对每个结点分三种情况讨论即可:自己是黑色,自己是白色而父亲是黑色,自己和父亲都是白色。 但关键在于这道题如果用inf 阅读全文
posted @ 2019-02-13 22:52 jrltx 阅读(193) 评论(0) 推荐(0)