题解:P10459 Raid

· · 题解

这个题解不介绍 Voronoi 图的具体做法,只会提供题目思路(基本等同于本讨论区的详细解读版)、一些参考资料以及本题需要处理的一些坑点。

题意

给定 n 个白色点和 m 个黑色点,求出所有一白一黑的点对中的最小欧氏距离。本题中 n=m\le 10^5,多测。

思路

由于本题的点分为两类,因此原本适用于平面最近点对的分治无法做,会退化到 O(n^2)

直接对白色点建立 kd-tree,然后对所有黑色点做最近邻查询的做法也不可行,因为欧氏最近邻查询的最坏复杂度还是 O(n),只需要构造近似于圆的点集就能轻松卡掉。

通过查阅上述讨论区,我们得知本问题为双色最近点对(Bichromatic Closest Pair, BCP)问题,且在查阅相关论文时可以发现本问题与欧几里得最小生成树(EMST)可在任意维度下进行规约,本题所涉及的 2 维平面属于相对简单的情形。

对于以上两个问题,先对所有点构成的点集构造 Delaunay 三角剖分,并利用最左转线法求出其对偶图,即 Voronoi 图。以上两个过程均可在 O(n\log n) 完成,其中 n 为点集规模。

由于 Voronoi 图为平面图,根据欧拉公式,边数不超过 3n-6,因此:

最终的时间和空间复杂度均为 O(n\log n) 的,常数稍微有一点大。

评测以及坑点

对于 Voronoi 图的正确性,可能需要多找几个评测链接分别测一测。

EMST 相关的:

本题相关的:

需要处理的坑点如下:

参考资料