20241014 算阶第一章补题
袭击
可以转化为平面最近点对问题,考虑如何求解。
维护一个 set 存储有可能更新答案的点并以 \(y\) 为第一关键字。将所有点按 \(x\) 排序,从左到右考虑,将横坐标与当前点的差大于已求出的答案的点删除,在 set 中二分出纵坐标与当前点差不超过当前答案的点,那么 set 中能更新答案的点不超过 \(6\) 个,直接更新就是 \(O(n\log n)\) 的。证明考虑下图:
以当前答案为半径做一个圆,并作出如图所示的矩形。将矩形划分为 \(6\) 个小矩形,设当前答案为 \(3x\),则矩形内两点最远距离即对角线长度为 \(\frac52x\),因为之前的点两两之间距离一定大于等于 \(3x\),所以一个小矩形内不可能有超过 \(1\) 个点,于是最劣情况就是有 \(6\) 个点更新答案,总的时间复杂度就是 \(O(n\log n)\) 的。
标签:20241014,set,算阶,补题,答案,矩形 From: https://www.cnblogs.com/luyuyang/p/18535173