题意
给定一棵
个点的树,树上某些点是黑点。每次询问是否能选出一个
个点的联通块,使其中有
个黑点。
询问数
。数据组数
。
分析
一棵树上的联通块是一棵树,因此考虑从儿子向父亲合并信息。那我们可以维护每个点选含自己的字数内
个点的联通块,其中有
个黑点的可行性,转移枚举儿子,枚举选点数量即可转移。
这样显然不行。于是我们发掘一下特性,发现不需要计算每个黑点数量的答案,因为一个子树内选黑点数量的可行性是连续的一段区间。就是说如果取
个黑点是可行的,取
个黑点是可行的,那么取
个黑点是可行的。
于是维护每个子树选
个点的联通块,可行黑点最大值和最小值是多少。然后枚举选点数量。
[ + view code ]