Algorithm 矩形中的TLE 1 spoj问题关于求整数坐标矩形形成的独立块数

Algorithm 矩形中的TLE 1 spoj问题关于求整数坐标矩形形成的独立块数,algorithm,Algorithm,我正在努力解决这个问题 . 问题陈述: 平面上绘制了n个矩形。每个矩形都有平行于坐标轴的边和顶点的整数坐标。 我们将块定义如下: 每个矩形都是一个块 如果两个不同的块有一个公共段,那么它们形成新的块,否则我们说这些块是分开的 为每个测试用例编写一个程序: 读取矩形的数量及其顶点的坐标 查找由矩形形成的独立块的数量 将结果写入标准输出 输入: 测试用例的数量t在输入的第一行,然后t个测试用例以空行分隔 在测试用例的第一行中有一个整数n,1我想到了更多的算法改进 使用快速联合/查找数据结构,

我正在努力解决这个问题 . 问题陈述:

平面上绘制了n个矩形。每个矩形都有平行于坐标轴的边和顶点的整数坐标。 我们将块定义如下:

  • 每个矩形都是一个块

  • 如果两个不同的块有一个公共段,那么它们形成新的块,否则我们说这些块是分开的

为每个测试用例编写一个程序:

  • 读取矩形的数量及其顶点的坐标
  • 查找由矩形形成的独立块的数量
  • 将结果写入标准输出
输入:

测试用例的数量t在输入的第一行,然后t个测试用例以空行分隔


在测试用例的第一行中有一个整数n,1我想到了更多的算法改进

使用快速联合/查找数据结构,而不是构建图形的邻接列表表示形式。然后,如果一个矩形与另一个矩形相交,您就可以立即停止——没有必要继续对迄今为止看到的所有其他矩形进行测试。有了这一点,大多数矩形与大多数其他矩形相交的问题实例将很快得到解决

仍然需要有效地处理大多数矩形与少数或没有其他矩形相交的问题实例。以下是几点观察:

  • 如果矩形的垂直和水平范围重叠,则该矩形只能与另一个矩形重叠

  • 如果我们有n个非重叠的矩形,集中在某个h*w网格的网格点上,那么必须是min(h,w),请将问题陈述放在问题本身中。
    因为矩形的数量最多为7000,查看每一对不会穿过10^7
    实际上,对的数量是
    2.45*10^7
    但这并不太多。也许你的算法没有优化?你能粘贴你的代码吗?这可能仅仅是你的
    coutBTW吗?你的DFS将计算连接组件的数量,这远远少于连接路径的数量