QOJ.ac

QOJ

Time Limit: 40 s Memory Limit: 1024 MB Total points: 48

#12092. 笛卡尔工作

Statistics

你可能听说过作为千克标准的铂铱圆柱体,但你知道有一个特殊的线段被用作千米的基准吗?它位于一个隐秘且平坦的地方,在二维平面上从 $(0, 0)$ 延伸到 $(0, 1000)$。

自然地,这个线段极其珍贵,因此它受到 $N$ 个旋转监控激光器的保护,这些激光器在二维平面上表现为射线。每个激光器都有一个固定的端点,并绕着该端点以每秒 1 转的恒定速度旋转。每个激光器是顺时针还是逆时针旋转,由安全系统均匀且独立地随机选择。

激光器不会被其他激光器或其端点,或者线段本身所阻挡。没有任何激光器的端点位于该线段上。

你受雇审计该安全系统,但你手头只有某一时刻的快照,显示了每个激光器的端点和(在该时刻的)方向。由于图像只是一个快照,你无法推断激光器的旋转方向。

你已经确定,如果存在一个非空的开时间区间,在此期间没有任何激光器接触到该线段,那么该线段就可以在一次盗窃行动中被偷走。这种情况发生的概率是多少?

输入格式

输入的第一行包含测试用例的数量 $T$。接下来是 $T$ 个测试用例。每个测试用例的第一行包含一个整数 $N$,表示激光器的数量。接下来的 $N$ 行,第 $i$ 行表示第 $i$ 个激光器射线,包含四个整数 $X_i, Y_i, X_i', Y_i'$,分别表示射线端点的二维坐标,以及射线上另一个点的二维坐标。

输出格式

对于每个测试用例,输出一行 Case #x: y,其中 $x$ 是测试用例编号(从 1 开始),$y$ 是上述概率。如果 $y$ 与正确答案的绝对误差或相对误差不超过 $10^{-6}$,则被视为正确。

数据范围

$1 \le T \le 100$。 $-10^6 \le X_i \le 10^6$,对于所有 $i$。 $-10^6 \le Y_i \le 10^6$,对于所有 $i$。 $-10^6 \le X_i' \le 10^6$,对于所有 $i$。 $-10^6 \le Y_i' \le 10^6$,对于所有 $i$。 $(X_i, Y_i) \neq (X_i', Y_i')$,对于所有 $i$。 如果 $X_i = 0$,则 $Y_i < 0$ 或 $Y_i > 1000$,对于所有 $i$。(没有激光器的端点在线段上。)

子任务 1

$1 \le N \le 10$。

子任务 2

$1 \le N \le 10000$。 至多有 8 个测试用例满足 $N > 100$。

样例

样例输入 1

3
5
0 1001 -1 1001
0 1001 -1 1001
0 1001 -2 1001
0 1001 0 500
0 1002 1234 5678
4
500 500 1000 1000
500 500 0 1000
500 500 0 0
500 500 1000 0
4
500 500 1000 1001
500 500 0 1000
500 500 0 0
500 500 1000 0

样例输出 1

Case #1: 1.000000
Case #2: 0.750000
Case #3: 1.000000

说明

在样例 1 中,请注意多个激光器可能共享相同的端点和初始方向,但这并不一定意味着它们以相同的方向旋转。(还要注意,第二个和第三个激光器具有相同的初始方向,尽管指定方式不同。)然而,无论它们的旋转方向如何,这些激光器中的每一个都仅在指向负 $y$ 方向的瞬间接触线段,因此显然存在另一个没有任何激光器接触线段的开区间,答案为 1。

在样例 2 中,每个激光器在其旋转过程中恰好有 1/4 的时间接触线段,并且当且仅当激光器 1 和 4 旋转方向相同,且激光器 2 和 3 旋转方向相同时,线段才会在所有时间内都被激光器接触。这种情况的概率是 1/4,所以答案是 3/4。

样例 3 与样例 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.