【题目背景】
离开沉没遗迹后,海水浸湿了 Gioush 大队带回的海图,原本相连的航线也散落开来。为了让船队安全返回晨汐港,Ehundategh 决定先将所有残片重新整理完整。
【题目描述】
平面上共有 n 张边平行于坐标轴的矩形残片。第 i 张残片的左下角为 (xi,1,yi,1),右上角为 (xi,2,yi,2),保证 xi,1<xi,2 且 yi,1<yi,2。
残片的位置与方向均已经固定,不能移动或旋转。两张残片可以共用边界。
若存在一个边平行于坐标轴的矩形,使得所有残片的并集恰好等于这个矩形,并且任意两张残片的内部互不相交,那么称这些残片能够完成一次完整拼合。
请你判断给出的残片能否完成完整拼合。
形式化题意:给定 n 个边平行于坐标轴的矩形,判断它们的并集是否为一个边平行于坐标轴的矩形,且任意两个矩形的内部是否互不相交。
【输入格式】
从文件 reunion.in 中读入数据。
本题包含多组测试数据。
输入的第一行包含一个非负整数 c 与一个正整数 T,分别表示测试点编号与测试数据的组数。c=0 表示该测试点为样例。
对于每组测试数据:
第一行包含一个正整数 n,表示矩形残片的数量。
接下来 n 行,第 i 行包含四个整数 xi,1,yi,1,xi,2,yi,2,表示第 i 张残片的左下角与右上角。
【输出格式】
输出到文件 reunion.out 中。
对于每组测试数据输出一行。若这些残片能够完成完整拼合,输出 Yes。若不能,输出 No。
\newpage
【样例 1 输入】
10 32430 0 1 141 0 2 150 1 1 261 1 2 27280 0 2 191 0 3 1103110 0 1 1121 0 2 1130 1 1 2
【样例 1 输出】
【说明/提示】
【样例 1 解释】
第一组中的四张残片恰好拼成左下角为 (0,0)、右上角为 (2,2) 的矩形。
第二组中的两张残片发生了重叠。第三组没有覆盖左上方的一块区域,因此后两组都不能完成完整拼合。
【样例 2】
见选手目录下的 reunion/reunion2.in 和 reunion/reunion2.ans。
该组样例符合测试点 1∼3 的数据范围。
【样例 3】
见选手目录下的 reunion/reunion3.in 和 reunion/reunion3.ans。
该组样例符合测试点 4∼7 的数据范围。
【样例 4】
见选手目录下的 reunion/reunion4.in 和 reunion/reunion4.ans。
该组样例符合测试点 8∼11 的数据范围。
【样例 5】
见选手目录下的 reunion/reunion5.in 和 reunion/reunion5.ans。
该组样例符合测试点 12∼15 的数据范围。
【样例 6】
见选手目录下的 reunion/reunion6.in 和 reunion/reunion6.ans。
该组样例符合测试点 16∼20 的数据范围。
【数据范围】
对于 100% 的数据,保证 1≤T≤20,1≤n≤2×105,∣xi,1∣,∣yi,1∣,∣xi,2∣,∣yi,2∣≤106。对于同一个测试点,保证 ∑n≤2×105。
特殊性质 A:所有矩形的横、纵坐标分别至多出现 200 种不同的取值。
特殊性质 B:任意两张矩形残片的内部互不相交。