题目描述
题目很长,大家自己去看吧。
原题 n≤300
加强版 n≤500000
题解
这种东西当然要猜结论的啦,否则会比较麻烦。
结论1:如果有很多条直径,那么不管核在哪条直径上,最小偏心距都相同。
结论2 :任意一条路径的偏心距不会小于核的最小偏心距。
这两个结论的证明方法类似。都是考虑两条路径的公共部分和非公共部分。如果最远的点到路径上的最近的点都在公共部分上,则偏心距相同。任意两条直径的非公共部分长度相同,最远的点到直径上的最近的点的距离显然大于最远的点到其他路径上的最近的点的距离(否则这条直径就不是直径了)。
结论1告诉我们可以只考虑一条路径,结论2告诉我们可以考虑所有 O(n2) 条路径而不用管这条路径是否在直径上。
对于 n≤300 ,直接暴力枚举路径的两个端点,枚举任意一个点,算出所有其他点到这条路径的距离,就是(这个点到一个端点的距离