[bzoj5072] [十月月赛] 小A的树 树上背包

题意

给定一棵 n 个点的树,树上某些点是黑点。每次询问是否能选出一个 x 个点的联通块,使其中有 y 个黑点。
询问数 10 5 , n 5000 。数据组数 5

分析

一棵树上的联通块是一棵树,因此考虑从儿子向父亲合并信息。那我们可以维护每个点选含自己的字数内 i 个点的联通块,其中有 j 个黑点的可行性,转移枚举儿子,枚举选点数量即可转移。
这样显然不行。于是我们发掘一下特性,发现不需要计算每个黑点数量的答案,因为一个子树内选黑点数量的可行性是连续的一段区间。就是说如果取 l 个黑点是可行的,取 r 个黑点是可行的,那么取 [ l , r ] 个黑点是可行的。
于是维护每个子树选 i 个点的联通块,可行黑点最大值和最小值是多少。然后枚举选点数量。

[ + view code ]

猜你喜欢

转载自blog.csdn.net/myjs999/article/details/80826551
今日推荐