QOJ.ac

QOJ

Limite de temps : 10 s Limite de mémoire : 256 MB Points totaux : 100

#11393. 计算区域数

Statistiques

在 $x-y$ 平面上分布着若干个矩形。矩形的四条边分别平行于 $x$ 轴或 $y$ 轴,且所有矩形都位于后文指定的范围内。矩形的坐标没有其他限制。

平面被一个或多个矩形的边所包围的区域分割。在图 C.1 的示例中,三个矩形相互重叠,平面被分割成了八个区域。

矩形可能会以更复杂的方式重叠。例如,两个矩形可能有重叠的边,它们可能共享角点,和/或它们可能是嵌套的。图 C.2 展示了这些情况。

你的任务是编写一个程序,计算被这些矩形分割后的平面区域数量。

输入格式

输入包含多个数据集。每个数据集的格式如下:

$n$ $l_1 \ t_1 \ r_1 \ b_1$ $l_2 \ t_2 \ r_2 \ b_2$ $\vdots$ $l_n \ t_n \ r_n \ b_n$

数据集以 $n$ ($1 \le n \le 50$) 开头,表示平面上矩形的数量。接下来的 $n$ 行每行描述一个矩形。第 $i$ 行包含四个整数 $l_i, t_i, r_i, b_i$,它们是第 $i$ 个矩形的坐标;$(l_i, t_i)$ 给出了矩形左上角的 $x-y$ 坐标,$(r_i, b_i)$ 给出了矩形右下角的坐标 ($0 \le l_i < r_i \le 10^6$, $0 \le b_i < t_i \le 10^6$, 对于 $1 \le i \le n$)。这四个整数由空格分隔。

输入以单个零结束。

输出格式

对于每个数据集,输出一行,包含被矩形边分割后的平面区域数量。

图 C.1. 三个矩形将平面分割为八个区域。这对应于样例输入的第一个数据集。$x$ 轴和 $y$ 轴仅用于说明,因此它们不分割平面。

图 C.2. 以更复杂方式重叠的矩形。这对应于第二个数据集。

样例

输入 1

3
4 28 27 11
15 20 42 5
11 24 33 14
5
4 28 27 11
12 11 34 2
7 26 14 16
14 16 19 12
17 28 27 21
2
300000 1000000 600000 0
0 600000 1000000 300000
0

输出 1

8
6
6

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.