QOJ.ac

QOJ

时间限制: 10.0 s 内存限制: 1024 MB 总分: 100 可 Hack ✓

#17873. Voronoi图归来

统计

图:大小为 4 的 Voronoi 图。

在二维笛卡尔坐标系中,我们定义非空点集 $S$ 的 Voronoi 图(Voronoi Diagram)为根据“在此位置上,点集 $S$ 中的哪个点最近?”这一标准来划分平面的图。更具体地,给定非空点集 $\{P_1, P_2, \dots, P_n\}$ 的 Voronoi 图是区域的集合:当且仅当对于所有 $1 \le j \le n$,都有 $d(P_i, K) \le d(P_j, K)$ 成立时,点 $K$ 被包含在区域 $i$ 中,其中 $d(X, Y)$ 表示点 $X$ 和 $Y$ 之间的欧几里得距离。

例如,在上图中,平面上的每个位置都根据距离其最近的点进行了着色。属于单个区域的点被着色为表示该区域的浅色,而属于多个区域的点则构成了黑色的线和点。

存在一种可以在 $O(n \log(n))$ 时间内计算 Voronoi 图的算法,但它因极其复杂和困难而闻名。事实上,我们是仁慈的出题人,因此我们设置了 $n \le 2000$,这意味着你可以使用较慢的 Voronoi 图算法来解决此任务!

在本任务中,你需要解决 Voronoi 图中的点查询问题:在由点集 $\{P_1, P_2, \dots, P_n\}$ 构建的 Voronoi 图中,你需要确定给定的点属于哪个(些)区域。更具体地,你将获得 $q$ 个点查询。对于每个查询点,你需要确定以下内容:

  • 如果它不属于任何区域,输出 NONE
  • 如果它恰好属于一个区域,输出 REGION X,其中 X 是该区域的编号。
  • 如果它恰好属于两个区域,输出 LINE X Y,其中 XY($X < Y$)是这两个区域的编号。
  • 如果它属于三个或更多区域,输出 POINT

输入格式

第一行包含两个整数,分别表示构成 Voronoi 图的点数 $n$ 和查询数 $q$。($3 \le n \le 2\,000$,$1 \le q \le 250\,000$)

接下来的 $n$ 行中,第 $i$ 行包含两个整数,表示 $P_i$ 的 $x$ 和 $y$ 坐标。这些是构成 Voronoi 图的点。所有 $n$ 个点互不相同。($|x|, |y| \le 10^4$)

接下来的 $q$ 行中,第 $j$ 行包含两个整数,表示 $Q_j$ 的 $x$ 和 $y$ 坐标。对于每个点 $Q_j$,你需要确定该点属于哪个(些)区域。($|x|, |y| \le 10^4$)

输出格式

输出包含 $q$ 行。在第 $j$ 行中,你应该输出以下内容之一:

  • 如果 $Q_j$ 不属于任何区域,输出 NONE
  • 如果 $Q_j$ 恰好属于一个区域,输出 REGION X,其中 X 是该区域的编号。
  • 如果 $Q_j$ 恰好属于两个区域,输出 LINE X Y,其中 XY($X < Y$)是这两个区域的编号。
  • 如果 $Q_j$ 属于三个或更多区域,输出 POINT

样例

输入样例 1

4 3
-5 0
0 5
3 4
1 -6
-2 2
0 0
2 2

输出样例 1

LINE 1 2
POINT
REGION 3

说明

样例对应的图示即为上图。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.