CF1458F Range Diameter Sum
题意:给出一棵
前置知识
点集直径:给出点集
点集最远点:定义
性质1:
对应的 一定是点集直径的两个端点之一。(反证) 性质2:点集
的直径为 ,则 的直径一定在 四个点当中。(注意到交叉贡献一定是 far,故一定是直径端点对直径端点)
因此,计算
性质3:所有点集直径的中点(可能在边上)相同。(反证)
性质4:记
的点集直径长度为 ,中点为 ,则 。
练习题:Luogu3304,CF516D。
题解
可以合并点集直径,但
因为只需要长度,可以改用(直径中点
考虑如何合并两个点集,由于我们可以只关心这两个属性,所有点集合在我们眼里都是邻域(圆)
:一者包含另一者,即 ,返回后者。(反之同理) - 两者互不包含:直径长度为
,形如 ,中点一定在 之间,且距离可以确定,容易倍增找出。
我们已经有了一套用
使用猫树分治,设中点为
- 首先,
的圆包含 的圆; - 然后,两圆互不包含;
- 最终,
的圆包含 的圆。
注意到,随着
得出分界线后,统计答案时需要计算
复杂度