对于曼哈顿距离有一个关键性质 对每个点 ,定义 ,则任意两点间有 所以一个点集的曼哈顿直径为 也就是说一个集合的曼哈顿直径 ,等价于它在 平面里横纵两个方向的跨度都 。 题目要把所有点分成两个非空集合,使得两个集合的直径都 。 在 平面里,这等价于: 每个集合都能被一个边长为 的正方形装下;要把所有点分成两个这样的集合。 所以只要能判断 是否可行,就可以二分最小答案。 如何 check? 先求出所有点的 ,然后枚举四个角,这里以左下角为例,把 或 ,即靠近左边界,或者靠近下边界的点,都归到这一组。然后检查组内 跨度是否都 ,若满足则该 可行。依次检查四个角即可。 #inclu...