Mart Master II
树上没点被标记为0/1,在树上找一新点标记为1,使得它支配的点集最大。
a支配b:b到达所有标号为1的点中,a是最近的。
*树分治的作用:统计经过重心的答案贡献。
为了叙述方便,做出以下定义:
d[u]:u到重心的距离
minn[u]:u到达最近标号为1的点的距离
id[u]:minn[u]答案点的编号
首先,对于u来说,任何一点v被它支配必须满足以下两条性质之一:
1)d[u]+d[v]<minn[v]
2)d[u]+d[v]==minn[v],u<id[v]
用pair表示:
MP(d[u],u)<MP(minn[v]−d[v],id[v])
接着,如果我们考虑经过重心的链(u,v)对u的答案贡献,就可以得到一个自然的统计思路:枚举u,统计所有非u所在子树中,满足上述不等式的v的个数。这个可以用双指针OR二分法实现。我是用双指针实现的。