QOJ.ac

QOJ

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

#12433. 虫洞一击

الإحصائيات

你正在参加一场星际超空间高尔夫比赛,并且已经晋级到了决赛!你非常渴望获胜,因此想要制定一套制胜策略。

在超空间高尔夫中,就像在传统高尔夫中一样,你用球杆击球,球会沿着你选择的方向运动。超空间高尔夫的场地是一个二维平面,上面分布着代表不同球洞的点。球也由一个点表示,你可以选择球的起始位置,只要它不在球洞所在的位置即可。

由于这是超空间高尔夫,玩家可以将某些球洞对连接起来,将其变成虫洞。每个球洞要么保持为普通球洞,要么最多与另一个球洞相连(不能与自身相连)。虫洞是无向连接,可以双向通行。

由于环境是无摩擦的,当你击球时,球会沿着直线运动,除非它到达一个球洞;设该球洞为 $h$。当球触碰到球洞 $h$ 时,如果 $h$ 没有连接到另一个球洞,球就会停止。如果 $h$ 连接到了另一个球洞 $h'$,那么球会立即从 $h'$ 出来,并继续沿之前的方向运动。

你知道每个球洞的位置。你想要最大化单次击球所能触碰到的不同球洞的数量。考虑到这个目标,你需要选择球的起始位置、击球方向,以及将哪些球洞对(如果有的话)连接成虫洞。球不能从虫洞所在的位置开始。当球穿过虫洞时,它进入的球洞和它出来的球洞都会计入你的总数。每个球洞只会被计算一次,即使球多次进入或从其中出来(或两者兼有)。如果球在某个球洞中停止,该球洞也会计入你的总数。

输入格式

输入的第一行包含测试用例的数量 $T$。接下来是 $T$ 个测试用例。每个测试用例的第一行包含一个整数 $N$:球洞的总数。接下来的 $N$ 行,每行包含两个整数 $X_i$ 和 $Y_i$,分别表示第 $i$ 个球洞的 $X$ 和 $Y$ 坐标。

输出格式

对于每个测试用例,输出一行 Case #x: y,其中 $x$ 是测试用例编号(从 1 开始),$y$ 是在做出上述最优决策后,你所能触碰到的不同球洞的最大数量。

数据范围

时间限制:每个测试集 30 秒。 内存限制:1GB。 $1 \le T \le 100$。 $-10^9 \le X_i \le 10^9$,对于所有 $i$。 $-10^9 \le Y_i \le 10^9$,对于所有 $i$。 $(X_i, Y_i) \neq (X_j, Y_j)$,对于所有 $i \neq j$。(没有两个球洞位于同一坐标。)

测试集 1(可见判决): $1 \le N \le 7$。

测试集 2(隐藏判决): $1 \le N \le 100$。

样例

样例输入 1

5
2
0 0
5 5
3
0 0
5 5
5 0
5
0 0
5 5
5 0
3 2
2 4
7
0 0
1 1
2 1
3 1
8 2
11 2
14 2
1
-1000000000 1000000000

样例输出 1

Case #1: 2
Case #2: 3
Case #3: 4
Case #4: 7
Case #5: 1

说明

在样例 1 中,我们可以将两个球洞连接成一个虫洞,这样通过将球打入其中任何一个,我们就能触碰到这两个球洞。注意,如果没有虫洞,球在触碰到第一个球洞时就会停下,因此不可能触碰到超过一个球洞。

在样例 2 中,我们可以连接位于 $(0, 0)$ 和 $(5, 5)$ 的球洞。然后,我们可以从位置 $(4.9, 5)$ 出发,沿正水平方向击球,使其首先触碰到位于 $(5, 5)$ 的球洞。球进入该球洞并从位于 $(0, 0)$ 的球洞出来,保持其正水平的运动方向。最后,它触碰到位于 $(5, 0)$ 的球洞并停止(因为该球洞没有连接任何虫洞)。

在样例 3 中,我们可以连接位于 $(0, 0)$ 和 $(5, 0)$ 的球洞对,以及位于 $(3, 2)$ 和 $(5, 5)$ 的球洞对。从 $(4, -1)$ 向位于 $(5, 0)$ 的球洞击球,会使球依次触碰到位于 $(5, 0)$、$(0, 0)$、$(5, 5)$ 和 $(3, 2)$ 的球洞。

在样例 4 中,我们可以连接位于 $(0, 0)$ 和 $(1, 1)$ 的球洞对,位于 $(2, 1)$ 和 $(11, 2)$ 的球洞对,以及位于 $(8, 2)$ 和 $(14, 2)$ 的球洞对。从 $(-1, 0)$ 向位于 $(0, 0)$ 的球洞击球,会使球依次触碰到以下位置的球洞:$(0, 0)$、$(1, 1)$、$(2, 1)$、$(11, 2)$、$(14, 2)$、$(8, 2)$、$(11, 2)$、$(2, 1)$ 和 $(3, 1)$。注意,尽管位于 $(11, 2)$ 和 $(2, 1)$ 的球洞被触碰了两次,但由于题目要求统计不同球洞的数量,它们各自只被计算了一次。

在样例 5 中,只有一个球洞,我们可以直接将球打入其中,而无需考虑虫洞。(顺便提一下,我们可以选择任何想要的起始位置,甚至是在球洞坐标允许范围之外的位置。)

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.