QOJ.ac

QOJ

時間限制: 10 s 記憶體限制: 1024 MB 總分: 25

#6006. 反抗帝国

统计

你是一个反抗邪恶银河帝国的反叛者,现在正在逃亡!

你破坏了帝国的邪恶工厂,帝国安全部队很快就会追上你!工厂位于 $N$ 个编号小行星系统中的 0 号小行星上。你的逃生飞船“世纪鹌鹑号”(Century Quail)位于 1 号小行星上,如果你能到达那里,就能安全飞离。

每颗小行星在太空中都是一个带有速度的质点,你随当前所在的小行星在太空中移动。你的“小行星跳跃器”允许你在系统中的任意两颗小行星之间瞬间跳跃。长距离跳跃比短距离跳跃更可怕(而且太空的真空环境令人恐惧),所以你希望最小化你需要跳跃的最大距离。然而,从现在开始,如果你在两次跳跃之间花费超过 $S$ 秒的连续时间,帝国安全部队就会抓住你。也就是说,从现在到第一次跳跃,以及后续每次跳跃之间的间隔,都必须小于或等于 $S$。你可以在任何时刻跳跃;不必在经过整数秒后才跳跃。当你跳跃到 1 号小行星时,你就逃脱了。

第 $i$ 号小行星在空间中的初始位置为 $(x_i, y_i, z_i)$,并且每秒移动的总距离为 $(V_{xi}, V_{yi}, V_{zi})$。这种运动在整个时间过程中是连续的;它不会每秒离散地更新。(小行星也可能是静止的。)如果小行星在同一时间占据空间中的同一点,什么也不会发生。你只能通过跳跃在两颗小行星之间旅行,即使它们在跳跃瞬间恰好占据同一点。

在最小化最大跳跃距离的逃生计划中,这个最大跳跃距离是多少?

输入格式

输入的第一行给出测试用例的数量 $T$。接下来是 $T$ 个测试用例。每个测试用例的第一行包含两个整数:$N$(小行星的数量)和 $S$(你可以不跳跃的最长持续时间)。接下来有 $N$ 行描述小行星。这些行中的第 $i$ 行(从 0 开始计数)包含六个整数:第 $i$ 号小行星在空间中的初始位置 $(x_i, y_i, z_i)$,以及它在单秒内移动的距离 $(V_{xi}, V_{yi}, V_{zi})$。

输出格式

对于每个测试用例,输出一行 Case #x: y,其中 $x$ 是测试用例编号(从 1 开始),$y$ 是一个浮点数:为了逃脱你必须进行的最长跳跃的距离。如果 $y$ 与正确答案的绝对误差或相对误差在 $10^{-4}$ 以内,则被视为正确。

数据范围

$1 \le T \le 20$ $2 \le N \le 1000$ $1 \le S \le 100$ $-500 \le x_i, y_i, z_i \le 500$

小型数据集(测试集 1 - 可见) $V_{xi} = 0, V_{yi} = 0, V_{zi} = 0$

大型数据集(测试集 2 - 隐藏) $-500 \le V_{xi}, V_{yi}, V_{zi} \le 500$

样例

样例输入 1

3
3 7
0 0 0 0 0 0
1 2 2 0 0 0
1 1 1 0 0 0
5 10
0 0 0 0 0 0
35 0 0 -1 0 0
1 54 0 0 -2 0
2 -150 0 0 10 0
4 0 0 -1 0 0
3 1
-10 2 0 1 0 0
0 0 10 0 0 -1
-10 -2 0 1 0 0

样例输出 1

Case #1: 1.7320508
Case #2: 2.0000000
Case #3: 4.0000000

说明

样例 1 是唯一可能出现在小型数据集中的样例。任何样例都可能出现在大型数据集中。

在样例 1 中,我们从位于 $(0, 0, 0)$ 的静止小行星出发,我们的飞船位于 $(1, 2, 2)$ 的小行星上。还有另一颗小行星位于 $(1, 1, 1)$。一种选择是直接跳跃到我们的飞船,距离为 3。另一种选择是先跳跃到另一颗小行星,距离为 $\sqrt{3}$,然后再从那里跳跃到飞船,距离为 $\sqrt{2}$。第一种选择的最大跳跃距离为 3,第二种选择为 $\sqrt{3}$,因此第二种选择更优。

注意,在小型数据集中 $S$ 的值无关紧要。由于所有小行星都是静止的,没有理由等待;我们可以瞬间完成所有跳跃。

在样例 2 中,我们从位于 $(0, 0, 0)$ 的静止小行星出发。我们可以在那里等待 4 秒,直到 4 号小行星靠近,跳上去,在上面飞行 1 秒,然后跳回 0 号小行星(此时两颗小行星之间的距离为 1)。我们在那里等待 10 秒,这非常接近被抓住的边缘,然后在 15 秒时跳跃到高速移动的 3 号小行星。两秒后,3 号小行星飞过 2 号小行星,我们跳到 2 号小行星。在 27 秒时,我们可以从 2 号小行星跳到 0 号小行星。我们在那里耐心地等待直到 35 秒,此时 1 号小行星到达我们这里,然后我们可以跳上去并逃脱。我们进行的最长跳跃是在 15 秒时从 0 号小行星到 3 号小行星,跳跃距离为 2。

在样例 3 中,安全部队非常活跃!你当然可以等待一秒钟并直接跳到 1 号小行星,但一个更好的选择——允许你进行的跳跃不超过 4——是在 0 号和 2 号小行星之间来回跳跃;同时等待 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.