洛谷P2449《[SDOI2005]矩形》

真就正解是暴力呗

题目描述

现在我们在一个平面上画了n个矩形。每一个矩形的两边都与坐标轴相平行,且矩形定点的坐标均为整数。现我们定义满足如下性质的图形为一个块:

1.每一个矩形都是一个块;

2.如果两个块有一段公共的部分,那么这两个块就会形成一个新的块,否则这两个块就是不同的。

示例:

图1中的矩形形成了两个不同的块。图2中的矩形形成了一个块。

任务:

请写一个程序:

1.从文本文件PRO.IN中读入各个矩形的顶点坐标;

2.找出这些矩形中不同的块的数目;

3.把结果输出到文本文件PRO.OUT中。

输入格式

文本文件PRO.IN的第一行包括一个整数n,1 <= n <= 7000,为矩形的数目。以下的n行为矩形顶点的坐标。每一个矩形都是用四个整数来描述的:左下角的x坐标、左下角的y坐标、右上角的x坐标和右上角的y坐标。所有的坐标都是不大于10000的非负整数。

输出格式

在文本文件PRO.OUT中输出唯一的一个整数——这些矩形所形成的不同的块的数目。

解析

考试题

当时看到这题发现自己只会 $O(n^2\log n)$,最后拿了 54pts
考试结束看了一眼洛谷题解,发现这玩意真就是个暴力。。。自己写丑了才少拿了分

具体就是 $O(n^2)$ 枚举所有的矩形,判断是否是一个联通块,是就用并查集把编号连起来,时间复杂度 $O(n^2\log n)$

代码实现

这里不给出代码,原因是洛谷数据过水导致我的 AC 代码可以被 Hack 掉。。找个时间再放上来吧