Algorithm 算法-找到覆盖给定矩形区域的矩形数

Algorithm 算法-找到覆盖给定矩形区域的矩形数,algorithm,Algorithm,这不是家庭作业问题。这是一个面试问题。我不能想出解决这个问题的好办法 问题: 给定n*n(左下(0,0)、右上(n,n))栅格和n个边平行于坐标轴的矩形。n个矩形的左下和右上坐标以(x1,y1)(x1',y1')…的形式提供。。。。(xn,yn)(xn',yn')。有M个查询询问包含坐标(a,b)(c,d)的矩形的数量。我如何以有效的方式解决它?有没有一种方法可以预先计算所有坐标位置,这样我就可以在O(1)中返回答案 限制条件: 1在O(n^4)空间和O(n^5)时间内创建一个提供O(1)查找的

这不是家庭作业问题。这是一个面试问题。我不能想出解决这个问题的好办法

问题:

给定n*n(左下(0,0)、右上(n,n))栅格和n个边平行于坐标轴的矩形。n个矩形的左下和右上坐标以(x1,y1)(x1',y1')…的形式提供。。。。(xn,yn)(xn',yn')。有M个查询询问包含坐标(a,b)(c,d)的矩形的数量。我如何以有效的方式解决它?有没有一种方法可以预先计算所有坐标位置,这样我就可以在O(1)中返回答案

限制条件:
1在O(n^4)空间和O(n^5)时间内创建一个提供O(1)查找的数据结构非常简单。如果M超过O(n^2),那么这样做可能是值得的。在O(n^2)空间和O(n^3)时间内创建一个在O(n)时间内提供查找的数据结构也很简单。如果M是O(n^2),这可能是一个更好的权衡;也就是说,在O(n)处分别取O(n^3)预计算时间和O(n^3)时间进行O(n^2)查找

对于预计算,创建一个n×n的列表数组。设L_pq表示n×n网格的单元p,q的列表。每个列表最多包含n个矩形,所有列表都按相同的关系排序(即如果在一个列表中,
Ri
,在该对中的每个列表中,
Ri
)。这组列表需要时间O(n^3)来计算,可以表示为“对于n^2个单元格中的每个C,对于n个矩形中的每个R,如果R中的C将R添加到L_C”,或者表示为“对于n个矩形中的每个R,对于R中的每个单元格C,将R添加到L_C”


给定一个查询(a,b,c,d),在时间O(n)中计算列表L_ab和L_cd的交集的大小。对于O(1)查找,首先进行上述预计算,然后对每个a、b、每个
c>a
D进行预计算,还有很多需要澄清的地方。你在找什么?(问题中你没说!!)M查询到底是什么意思?如果我指定一个仅覆盖矩形一部分的区域,会发生什么情况?有很多问题需要先问。你问的是O(1)解,这让我对n个矩形感到困惑。如果你必须使用所有n个矩形来计算你的解,那么它最多只能是一个O(n)解。我怀疑你的问题在于你对问题的把握不好,在这种情况下,答案是无关紧要的——如果你不正确理解面试官的问题,你就永远无法给出正确的答案。