设 \(A(x_1, y_1), B(x_2, y_2)\)。
欧几里得距离
\[|AB| = \sqrt{(x_2 - x_1)^2 + (y_2 - y_1)^2} \]
一般模型:在一个坐标系上,求从一个点到另一个点的最短几何距离。
曼哈顿距离
\[|AB| = |x_2 - x_1| + |y_2 - y_1| \]
一般模型:网格图中从一个点走向另一个点的最短距离。
切皮雪夫距离
\[|AB| = \max(|x_2 - x_1|, |y_2 - y_1|) \]
一般模型:棋盘上或者在图中一个点到另外相邻八个点的距离为 1。
曼哈顿和切皮雪夫距离的互相转化
曼哈顿 \(\to\) 切皮雪夫:\((x, y) \to (x + y, x - y)\)。
切皮雪夫 \(\to\) 曼哈顿:\((x, y) \to (\frac{x + y}{2}, \frac{x - y}{2})\)。
后者用的比较多,切皮雪夫距离在计算时要取 \(max\),往往不是很好优化。
固定聚会点后,直接计算距离和是 \(O(n)\) 的,无法接受。
我们转化成曼哈顿距离,发现 \(x, y\) 的贡献分别独立出来了,我们可以分别排序,前缀和优化,二分查找。这样就能做到单次 \(O(2logn)\) 计算,可以通过本题。
- 参考博客