[ABC215F] Dist Max 2

发布时间 2023-08-15 19:10:42作者: -白简-

二分答案。

一般来说找最大值的最小,最小值的最大一般都是二分答案。

我们二分的是 \(\mathrm{min}\ (\left| x_i-x_j \right|,\left| y_i-y_j \right|)\),假设现在枚举到 \(mid\),那么合法的条件是 \(\mathrm{min}\ (\left| x_i-x_j \right|,\left| y_i-y_j \right|) \geq mid\),即 \(\left| x_i - x_j \right| \geq mid\)\(\left| y_i - y_j \right| \geq mid\)

我们可以把所有点按照 \(x\) 从小到大排序,然后我们可以用双指针维护。

先定位右指针位置,使得 \(x_r - x_l \geq mid\),然后开始移动左指针,并时刻根据 \(x_r - x_l\) 的值移动右指针,这一步就保证了 \(\left| x_i - x_j \right| \geq mid\)

两个指针位置确定时,找到左指针左侧和右指针右侧区间的的 \(y\) 的最大值、最小值,判断二者相减值是否合法。