#P14634. [2018 KAIST RUN Fall] Voronoi Diagram Returns
[2018 KAIST RUN Fall] Voronoi Diagram Returns
Description
:::align{center}

大小为 4 的 Voronoi 图。 :::
在二维笛卡尔坐标系中,我们将非空点集 的 Voronoi 图 定义为按"该位置最接近集合 中的哪个点?"这一准则划分平面的图形。更精确地说,给定非空点集 的 Voronoi 图是一个 区域 的集合:点 包含在区域 中当且仅当对于所有 有 ,其中 表示点 和 之间的欧几里得距离。
例如,在上图中,平面上的每个位置都根据最接近的点着色。属于单个区域的点用浅色表示该区域,而属于多个区域的点形成黑色的线和点。
有一种算法可以在 时间内计算 Voronoi 图,但它以非常复杂和困难而闻名。实际上,我们是宽容的出题人,因此我们设定 ,这意味着你可以用较慢的 Voronoi 图算法解决这个任务!
在此任务中,你需要解决 Voronoi 图中的 点查询问题:在由点集 构建的 Voronoi 图中,你需要确定点属于哪个(哪些)区域。更精确地说,你将收到 个点的查询。对于每个查询点,你需要确定以下内容:
- 如果它不包含在任何区域中,输出
NONE。 - 如果它恰好包含在一个区域中,输出
REGION X,其中X是该区域的索引。 - 如果它恰好包含在两个区域中,输出
LINE X Y,其中X和Y(XY)是这两个区域的索引。 - 如果它包含在三个或更多区域中,输出
POINT。
Input Format
第一行给出构成 Voronoi 图的点的数量 和查询的数量 (,)。
接下来的 行中,第 行给出两个整数,表示 的 和 坐标。这些是构成 Voronoi 图的点。所有 个点都是不同的()。
接下来的 行中,第 行给出两个整数,表示 的 和 坐标。对于每个点 ,你应该确定给定点属于哪个(哪些)区域()。
Output Format
输出包含 行。在第 行,你应该输出以下之一:
- 如果 不包含在任何区域中,输出
NONE。 - 如果 恰好包含在一个区域中,输出
REGION X,其中X是该区域的索引。 - 如果 恰好包含在两个区域中,输出
LINE X Y,其中X和Y(XY)是这两个区域的索引。 - 如果 包含在三个或更多区域中,输出
POINT。
4 3
-5 0
0 5
3 4
1 -6
-2 2
0 0
2 2
LINE 1 2
POINT
REGION 3
Hint
示例图如上所示。
翻译由 DeepSeek V3 完成
京公网安备 11011102002149号