发现同颜色最远点对一定有一点在直径 S 上。
这下找到直径,算每个点到直径的两种距离。
然后枚举最远点对长度 d,根据两种距离跟 d 的大小关系,我们可以知道一个点选的方案数。
然后我们考虑容斥。
记答案为 ∑wifi 的形式,表示最远点对为 wi 的方案数为 fi。
对于一个 x,我们计算 g(x)=∑[wi>x]fi,则答案为 x=0∑S−1g(x)。
我们钦定直径的颜色不同。
记 mn=max(min(d1i,d2i)),即最远点对的最小值。
对于 x∈[0,mn),g(x)=2n。
对于 x∈[mn,S),g(x)=2n−∑[wi≤x]fi,减去的就是最远点对 ≤x 的方案数。
对于点 i,如果它满足 max(d1i,d2i)≤x,则它两种颜色都可以染;否则它只能染一种。记满足前者条件的点有 cnt 个,则 ∑[wi≤x]fi=2cnt+1,还有对直径颜色的分配。