QOJ.ac

QOJ

时间限制: 6 s 内存限制: 512 MB 总分: 100

#10448. 最短飞行路径

统计

商业航班在统计学上非常安全(就每乘客公里的死亡人数而言,只有去月球旅行更安全)。但出于预防和安全法规的考虑,仍有必要采取一些措施。早期的一项此类规则是所谓的“60分钟规则”,它要求双引擎飞机在整个飞行路径中,距离最近的合适机场的时间必须在60分钟以内。虽然存在各种类似的规则,但其核心思想是一样的:飞行路径不能使飞机距离最近机场超过一定的最大允许距离。由于这些限制,飞机并不总能使用从一个机场到另一个机场的直飞航线。

在本题中,我们将计算两个机场之间的最短飞行路径,同时遵守最大允许距离规则。在下图中,展示了第一个样例测试用例,任何飞行路线都必须保持在三个圆圈内。因此,从机场 2 飞往机场 3 的飞机必须绕道经过机场 1 周围的区域。注意,飞机不一定非要到达机场 1 本身。

飞机燃油供应有限,为了飞行更远的距离,它们可能需要在中途机场停留,这使得情况变得更加复杂。因此,根据燃油容量的不同,图中从机场 2 飞往机场 3 的飞机可能需要在机场 1 停留(或者燃油容量可能太低,甚至无法到达机场 1,在这种情况下,行程将无法完成)。

我们做出以下简化假设:

  1. 地球表面是一个半径为 $6370\text{ km}$ 的球体。
  2. 时间和燃油消耗都与飞行距离成正比。换句话说,我们只关心总飞行距离。
  3. 飞机在不同高度飞行所造成的距离差异可以忽略不计。因此,实际上我们假设它们沿着地球表面飞行。
  4. 飞机可以在需要时在任意多个中间机场停留加油,每次加油后油箱都会加满。

输入格式

每个测试用例的第一行包含两个整数 $N$ 和 $R$,其中 $2 \le N \le 25$ 是机场数量,$1 \le R \le 10\,000$ 是距离最近机场的最大允许飞行距离(单位:km)。接下来的 $N$ 行,每行包含两个整数 $\phi, \theta$,满足 $0 \le \phi < 360$ 和 $-90 \le \theta \le 90$,分别表示机场的经度和纬度(单位:度)。机场按照输入顺序从 1 开始编号。没有两个机场位于同一位置。

随后是一行,包含一个整数 $Q$,满足 $1 \le Q \le 100$。接下来的 $Q$ 行,每行包含三个整数 $s, t, c$,满足 $1 \le s, t \le N, s \neq t$ 以及 $1 \le c \le 50\,000$,表示一架从机场 $s$ 飞往机场 $t$ 的飞机,其燃油容量对应的航程为 $c\text{ km}$。

输出格式

对于每个测试用例,输出用例编号,随后为每个查询输出一行,包含在燃油限制 $c$ 下,机场 $s$ 和 $t$ 之间最短飞行路径的长度(单位:km)。长度需精确到小数点后三位。如果两个机场之间不存在可行的路径,则输出 impossible

你可以假设答案对于 $R$ 或 $c$ 最多 $0.1\text{ km}$ 的扰动在数值上是稳定的。

样例

输入 1

3 2000
0 0
0 30
30 0
3
2 3 5000
2 3 4000
2 3 3000
2 10000
45 45
225 -45
2
1 2 50000
2 1 50000

输出 1

Case 1:
4724.686
6670.648
impossible
Case 2:
impossible
impossible

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.