QOJ.ac

QOJ

実行時間制限: 1 s メモリ制限: 32 MB 満点: 100

#13077. 连接点

統計

“Joining points” 是一个单人游戏。游戏开始时,选择两个大于 2 的整数,分别记为 $g$ 和 $r$。然后在正方形的四个顶点处画四个点,使顶部的两个点为绿色,底部的两个点为红色。在正方形内部绘制绿色点和红色点,并确保没有任何三个点(包括最初的四个点)在同一条直线上。继续绘制,直到绿色点的总数等于 $g$,红色点的总数等于 $r$。

画板绘制完成后,开始连接点。只要满足以下条件,任意两个点都可以用线段连接: 要连接的两个点颜色相同,且 连接这两个点的线段不与任何先前绘制的线段相交(端点除外)。

如果可以通过已绘制的线段从点 $u$ 移动到点 $v$,则称点 $u$ 和点 $v$ 处于同一个连通分量中。

如果你能使用恰好 $g-1$ 条线段将所有绿色点连接成一个连通分量,并使用恰好 $r-1$ 条线段将所有红色点连接成另一个连通分量,你就赢得了游戏。可以证明,如果点按照上述方式绘制,则总有一种方法可以赢得游戏。

你将获得一个边长为 $s$ 的正方形画板,其中包含 $g$ 个绿色点和 $r$ 个红色点,它们的坐标由整数对 $(x_i, y_i)$ 表示。绿色点编号从 1 到 $g$,其中左上角的点 $(0, s)$ 为 1,右上角的点 $(s, s)$ 为 2,内部点从 3 到 $g$ 编号,顺序任意。红色点编号从 1 到 $r$,其中左下角的点 $(0, 0)$ 为 1,右下角的点 $(s, 0)$ 为 2,内部点从 3 到 $r$ 编号,顺序任意。

图中展示了一个示例游戏,所有绿色点连接成一个连通分量,所有红色点连接成另一个连通分量。你可以看到没有任何三个点在同一条直线上,且除了端点外,没有任何两条线段相互交叉。

任务

编写一个程序,给定 $g$ 个绿色点的坐标和 $r$ 个红色点的坐标,决定如何绘制 $g-1$ 条绿色线段和 $r-1$ 条红色线段,使得所有绿色点处于同一个连通分量中,所有红色点处于另一个连通分量中,且没有任何两条线段相互交叉。

数据范围

$3 \le g \le 50\,000$ 绿色点的数量。 $3 \le r \le 50\,000$ 红色点的数量。 $0 < s \le 200\,000\,000$

输入格式

第一行包含整数 $g$。 接下来的 $g$ 行:每行包含两个空格分隔的整数,表示每个绿色点的坐标 $x_i$ 和 $y_i$,编号从 1 到 $g$。 第 $g+2$ 行:包含整数 $r$。 接下来的 $r$ 行:每行包含两个空格分隔的整数,表示每个红色点的坐标 $x_i$ 和 $y_i$,编号从 1 到 $r$。

输出格式

输出文件必须包含 $(g-1) + (r-1)$ 行,每一行对应一条连接点的线段。 每行必须包含三个空格分隔的实体:两个整数和一个字符。这两个整数表示该线段连接的两个点的编号。如果连接的是绿色点,字符必须为 g;如果连接的是红色点,字符必须为 r。 列出线段的顺序无关紧要;线段端点的顺序也无关紧要。

样例

输入格式 1

6
0 1000
1000 1000
203 601
449 212
620 837
708 537
8
0 0
1000 0
185 300
314 888
416 458
614 622
683 95
838 400

输出格式 1

1 3 g
3 1 r
3 5 r
4 6 r
6 5 r
4 6 g
1 2 g
1 2 r
5 2 g
2 6 g
7 8 r
8 2 r

子任务

对于总分 35 分的一组测试用例,每个测试运行将满足以下要求: $3 \le g \le 20$ $3 \le r \le 20$

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.