QOJ.ac

QOJ

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

#3882. GPS

الإحصائيات

你可能像许多其他人一样,使用过全球定位系统(GPS),但可能好奇过它是如何工作的。GPS 定位基于一组绕地球运行的卫星。所有卫星都有一个同步的内部时钟。它们通过无线电波持续向地球表面传输其内部时钟的值。GPS 接收器同时收集来自视野内某些卫星的测量数据。在时间 $t$ 收集到的时间测量值 $t_1, \dots, t_m$ 通常是不同的,因为每颗卫星到接收器的距离各不相同。由于我们知道所有卫星的精确轨道,因此我们确切地知道每颗卫星发送信号时的位置。基于这些位置和距离,我们可以计算出我们的位置。为了计算出唯一的位置,假设我们在地球表面,我们需要至少 3 个来自卫星的测量值。

然而,你的任务不是计算你自己的位置,而是确定你从哪些卫星接收到了信号。具体来说:给定你在地球上的地理坐标以及所有卫星轨道的描述,你需要为每颗卫星确定: 从卫星在特定时间发送的信号是否会到达你这里(如果信号没有穿过地球,则会到达)。 如果信号确实到达了你这里,计算信号从卫星传播到你所在位置所需的时间。

请记住,无线电波沿直线传播,速度为光速,我们假设光速为 $299\,792\,458$ 米每秒。我们假设地球是一个半径为 $6\,371\,\text{km}$ 的完美球体,并且所有 GPS 卫星都以固定速度在以地心为圆心的完美圆轨道上绕地球运行。

输入格式

输入包含: 一行包含一个整数 $s$ ($1 \le s \le 10^4$),表示卫星的数量; 一行包含两个实数 $l_o, l_a$,表示你所在位置的经度和纬度; * $s$ 行,每行包含四个实数 $\phi, \psi, r, x$,描述一颗卫星。

对于经度 $l_o \in [-180, 180]$,正值表示东经,负值表示西经。 对于纬度 $l_a \in [-90, 90]$,正值表示北纬,负值表示南纬。

卫星描述的格式如下: $\phi \in [-180, 180]$ —— 轨道与地球赤道相交的参考经度(每个轨道至少与赤道相交两次)。正经度表示东经,负经度表示西经。 $\psi \in [0, 360]$ —— 轨道在经度 $\phi$ 处穿过赤道时,轨道与地球向东赤道之间的夹角。$0$ 到 $180$ 之间的值表示向北运动,而 $180$ 到 $360$ 之间的值表示向南运动。如果轨道与赤道共面,则角度 $\psi$ 为 $0$ 或 $180$。 $r \in [7\,000, 10^6]$ —— 卫星轨道半径,单位为千米。 $x \in [0, 1)$ —— 信号发送时卫星已覆盖的轨道分数,从其在 $\phi$ 处与赤道的交点开始计算。

图 G.1:卫星坐标示意图。卫星轨道以红色显示,其实际位置为红点。在地球上,赤道和本初子午线用线条标出。虚线与赤道共面,且半径与卫星轨道相同。角度 $\phi$ 和 $\psi$ 在输入部分进行了描述。黑点是你在地表的位置,你应该计算信号沿蓝线传播所需的时间。

说明:输入中的所有实数最多给出小数点后 3 位。保证每颗卫星距离你所在位置的切平面至少 1 米(这意味着你可以在解题中安全地使用浮点运算)。

输出格式

对于每颗卫星,如果来自该卫星的信号无法到达你这里,输出 no signal。 如果卫星信号确实到达了你这里,输出信号从卫星传播到你所在位置所需的时间,单位为秒。时间必须精确到相对误差或绝对误差(取较小者)不超过 $10^{-7}$。

样例

样例输入 1

3
45.0 45.0
0.0 45.0 7500.0 0.125
0.0 60.0 7000.0 0.3
-50.0 5.0 25000.0 0.3

样例输出 1

0.00773245
no signal
0.0690288

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.