QOJ.ac

QOJ

実行時間制限: 1.0 s メモリ制限: 256 MB 満点: 100 ハック可能 ✓

#10920. 巨大的云朵

統計

这是一个星光璀璨的夜晚,DreamGrid 正在数星星。不幸的是,天空中出现了云朵,许多星星被遮挡了。DreamGrid 想走出阴影,找到一个至少能看到一颗星星的地方。他首先想知道阴影的总面积(长度)。

天空中共有 $n$ 颗星星和 $m$ 朵云。形式化地,每颗星星由二维平面上的一个点 $(x_i, y_i)$ ($1 \le i \le n$) 表示。第 $i$ 朵云 ($1 \le i \le m$) 由一条线段 $(u_{i1}, v_{i1}) - (u_{i2}, v_{i2})$ 表示,其中 $(u_{i1}, v_{i1})$ 和 $(u_{i2}, v_{i2})$ 是该线段的两个端点。

对于 $x$ 轴上的一个观察点 $(x, 0)$,如果在此处看不到任何星星,DreamGrid 就认为该点处于阴影中。如果在观察点与星星之间的连线不与任何云朵相交(包括云朵的端点),则称该星星在观察点可见。注意,如果一朵云(包括其端点)穿过了某颗星星,那么这颗星星在任何地方都不可见。

遍历整个 $x$ 轴并计算总阴影面积是一件很累人的事。你能告诉 DreamGrid $x$ 轴上被阴影覆盖的总面积(长度)吗?

输入格式

输入包含多组测试数据。输入的第一行包含一个整数 $T$ ($1 \le T \le 500$),表示测试数据的组数。

对于每组数据,第一行包含两个整数 $n$ 和 $m$ ($1 \le n, m \le 500$),分别表示星星和云朵的数量。接下来的 $n$ 行描述星星的位置。第 $i$ 行 ($1 \le i \le n$) 包含两个整数 $x_i$ 和 $y_i$ ($-10^4 \le x_i \le 10^4, 1 \le y_i \le 10^4$),表示第 $i$ 颗星星的位置。接下来的 $m$ 行描述云朵的位置。第 $i$ 行 ($1 \le i \le m$) 包含四个整数 $u_{i1}, v_{i1}, u_{i2}, v_{i2}$ ($-10^4 \le u_{i1}, u_{i2} \le 10^4, 1 \le v_{i1}, v_{i2} \le 10^4, (u_{i1}, v_{i1}) \neq (u_{i2}, v_{i2})$),表示第 $i$ 朵云的两个端点坐标。

保证 $\max(n, m) \ge 100$ 的测试数据组数不超过 5 组。请注意,多颗星星可能位于同一位置,云朵之间也可能相交或重叠。

输出格式

对于每组数据,输出一行,包含一个实数,表示 $x$ 轴上阴影的总面积(长度)。如果答案大于 $10^9$,则输出 $-1$。

当且仅当你的答案与标准答案的绝对误差或相对误差不超过 $10^{-4}$ 时,你的答案才会被接受。

样例

输入 1

8
1 2
0 3
-2 1 -1 1
2 1 1 1
1 2
0 3
-2 1 -1 1
1 2 2 1
2 2
10000 100
-10000 100
-10000 50 -3000 50
10000 50 3000 50
2 2
0 3
-1 10
3 2 0 1
0 1 -1 10
1 1
0 2
1 1 3 2
1 1
0 10000
-10000 9999 10000 9999
1 1
0 10000
-9999 9999 9999 9999
1 1
0 10000
-10000 1 9999 2

输出 1

3.0000000000
1.5000000000
8000.0000000000
-1
-1
200000000.0000000000
199980000.0000000000
20002.0003000500

说明

对于第一个样例,阴影的范围是 $[-3, -1.5] \cup [1.5, 3]$。

对于第四个样例,第二颗星星被第二朵云遮挡,因此它在任何地方都不可见。

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.