Description
给定 $n$ 个点,每个点的坐标为 $(x,y)$,求曼哈顿距离的最大点对,输出这个最大值。
$(1 \leq n \leq 5 \times 10^4,-10^6 \leq x,y \leq 10^6)$
Source
Solution 1
根据题意,对于式子 $\left | x_1-x_2\right| +\left | y_1-y_2\right| $,我们可以分成四种情况考虑:
第一种情况:$x_1 - x_2 \geq 0,y_1 - y_2 \geq 0$
第二种情况:$x_1 - x_2 < 0,y_1 - y_2 \geq 0$
第三种情况:$x_1 - x_2 \geq 0,y_1 - y_2 < 0$
第四种情况:$x_1 - x_2 < 0,y_1 - y_2 < 0$
每种情况的答案要么只与 $x+y$ 的值有关,要么只与 $x-y$ 的值有关,所以最后的答案为
Code 1
1 |
|
Solution 2
我们考虑将题目所求的 曼哈顿距离 转化为 切比雪夫距离,即把每个点的坐标 $(x,y)$ 变为 $(x + y, x - y)$ 。
所求的答案就变为 $\max \begin{Bmatrix} \max\begin{Bmatrix} \left | x_i - x_j\right| ,\left | y_i - y_j\right| \end{Bmatrix} \end{Bmatrix}$ 。
在所有点中,横坐标之差的最大值和纵坐标之差的最大值都有可能成为答案,所以我们只需要预处理出 $x,y$ 的最大值和最小值即可。时间复杂度为 $O(n)$ 。
Code 2
1 |
|