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