[bzoj2589]Count on a tree II
Count on a tree II
题解
看到这道题,如果不加强制在线什么的,应该是很容易想到树上莫队的,根据欧拉序很容易解决。
可是由于要强制在线,就不能离线下来做了,于是我们就想到了用树上分块来进行处理。
容易证明,如果我们在一棵节点数为的树上选择一些点使得树上任意一点到被选择点的距离不会超过
,那么一定存在一种方法使得选择的点数不会超过
个。
如果我们从深度最大且未被覆盖的点开始,往上找最多个点,将最远处即与那个点距离达到
的祖先或是根节点的点选择,则一定可以使当前的选择成为这个点子树上的最优解,因为其子树上不会存在点的贡献比它大。
于是,我们就可以先这样选出