QOJ.ac

QOJ

حد الوقت: 10 s حد الذاكرة: 1024 MB مجموع النقاط: 35

#12088. 围栏建造

الإحصائيات

你是围栏建筑公司的员工,任务是建造 $F$ 个围栏。每个围栏都是一条从一点到另一点的直线。形式上,每个围栏都是连接二维空间中两个不同点的线段。围栏之间互不相交,除非在端点处。所有围栏都是连通的,即对于任意一对围栏 $f$ 和 $g$,都存在一条路径 $f = f_1, f_2, \dots, f_k = g$,使得 $f_i$ 与 $f_{i+1}$ 共享一个端点。

在你开始工作时,还没有建造任何围栏。建造过程使用一种特殊的围栏 3D 打印机。由于只有一台这样的设备,围栏必须一个接一个地建造。打印机足够小,可以将其视为平面上的一个点。

要建造一个围栏 $f$,你必须首先将打印机放置在平面上的一个点 $p$ 处,使得打印机能够看到整个 $f$,且不会被之前建造的围栏遮挡。形式上,$p$ 必须满足: $p$ 不在 $f$ 上(甚至不在端点上)。 对于 $f$ 上任何非端点的点 $q$,连接 $p$ 和 $q$ 的线段不与任何之前建造的围栏相交。

为了放置打印机,你可以将其从当前位置通过平面移动,路径不一定是直线,只要该路径不与任何之前建造的围栏相交(甚至不经过端点)。你可以在建造第一个围栏之前和建造最后一个围栏之后选择打印机的任意位置。

必须遵循此过程意味着你未必能以任何顺序建造围栏。例如,你可能会选择一个顺序,导致打印机被围住,从而无法将其移动到需要的位置。

组织主管草拟了一个涉及 $K$ 个围栏的相对顺序(但这些围栏尚未建造),且没有经过深思熟虑。为了避免惹恼他们,你需要使用这个顺序,并在你喜欢的任何位置插入剩余的 $F-K$ 个围栏来完成排序。

在这些限制条件下,找到一个建造围栏的顺序。保证至少存在一个有效的顺序。

输入格式

输入的第一行包含测试用例的数量 $T$。接下来是 $T$ 个测试用例。每个测试用例的第一行包含两个整数 $F$ 和 $K$:围栏总数和主管不完整排序中的围栏数量。然后是 $F$ 行;其中第 $i$ 行(从 1 开始计数)包含四个整数 $A_i, B_i, C_i$ 和 $D_i$,表示第 $i$ 个围栏是从 $(A_i, B_i)$ 到 $(C_i, D_i)$ 的线段。输入中给出的前 $K$ 个围栏是主管排序中的 $K$ 个围栏。

输出格式

对于每个测试用例,输出一行,以 Case #x: y 开头,其中 $x$ 是测试用例编号(从 1 开始),$y$ 是 $1$ 到 $F$ 之间整数的空格分隔序列,给出一个有效的围栏建造顺序。

数据范围

$1 \le T \le 100$。 $4 \le F \le 300$。 $-10^5 \le A_i \le 10^5$,对于所有 $i$。 $-10^5 \le B_i \le 10^5$,对于所有 $i$。 $-10^5 \le C_i \le 10^5$,对于所有 $i$。 $-10^5 \le D_i \le 10^5$,对于所有 $i$。 $(A_i, B_i) \neq (C_i, D_i)$,对于所有 $i$。 如果 $p$ 是围栏上的非端点,则 $p$ 不是任何其他围栏上的点。 给定的围栏是连通的,如题目定义所述。 至少存在一个满足题目中所有建造限制的围栏顺序。 时间限制:每个测试集 10 秒。 内存限制:1GB。

样例

样例输入 1

3
6 2
0 0 7 7
15 -2 10 0
0 0 0 10
0 0 10 0
0 10 10 10
10 0 10 10
6 1
0 0 0 10
0 0 10 0
0 10 10 10
10 0 10 10
0 0 7 7
15 -2 10 0
11 4
-10 0 10 0
-10 0 0 10
10 0 0 10
0 2 0 5
0 2 10 0
10 0 0 5
15 3 18 3
15 3 15 9
18 3 15 9
15 3 16 5
0 10 15 3

样例输出 1

Case #1: 1 2 3 4 5 6
Case #2: 5 6 1 2 3 4
Case #3: 11 10 7 8 9 1 2 3 6 5 4

说明

注意,最后一个样例在测试集 1 中不会出现。

在样例 1 中,可以按照给定的顺序建造围栏:1, 2, 3, 4, 5, 6。注意,根据主管的列表,围栏 1 必须比围栏 2 更早建造。

在样例 2 中,无法按照给定的顺序建造围栏!一种可能的顺序是:5, 6, 1, 2, 3, 4。注意,当主管的列表中只包含一个围栏时,相对顺序条件总是平凡满足的。

在样例 3 中,可以按照以下顺序建造围栏:11, 10, 7, 8, 9, 1, 2, 3, 6, 5, 4。注意,围栏 1, 2, 3 和 4 必须按照该相对顺序建造。

下图展示了样例 1 的一种有效建造方式。

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.