Algorithm 最大矩形重叠点

Algorithm 最大矩形重叠点,algorithm,Algorithm,给定N个矩形的坐标(N使用一个。您的情况有点复杂,因为您确实需要一个加权区间树,其中权重是该区间的开放矩形数。如果您知道前面所有矩形的坐标,您可以使用“坐标压缩” 由于您只有10^5个矩形,这意味着您最多有2*10^5个不同的x和y坐标。因此,您可以创建从这些坐标到1到2*10^5的自然数的映射(只需对坐标排序).然后你就可以使用你已经知道的普通树作为新的坐标 这就足以得到矩形的数量,但如果你还需要它们重叠的点,你还应该保持反向映射,这样你就可以回到矩形的真实坐标。在一般情况下,答案将是一个矩形

给定N个矩形的坐标(N使用一个。您的情况有点复杂,因为您确实需要一个加权区间树,其中权重是该区间的开放矩形数。

如果您知道前面所有矩形的坐标,您可以使用“坐标压缩”

由于您只有10^5个矩形,这意味着您最多有2*10^5个不同的
x
y
坐标。因此,您可以创建从这些坐标到1到2*10^5的自然数的映射(只需对坐标排序).然后你就可以使用你已经知道的普通树作为新的坐标


这就足以得到矩形的数量,但如果你还需要它们重叠的点,你还应该保持反向映射,这样你就可以回到矩形的真实坐标。在一般情况下,答案将是一个矩形,而不仅仅是一个点。

你需要多快的查找速度?听起来你需要nt提前扫描以获得O(1)查找。在矩形中扫描你想知道的每个点是不可接受的?它看起来像一棵非常复杂的树。从未使用过类似的东西,我将研究它,但你有比维基百科更好的教程吗?好的,我知道我会尝试实现它,但反向映射似乎非常棘手。但是这是一个很好的解决方案。实际上,它应该非常简单-对于从普通到压缩的映射,使用某种字典(映射等),对于反向映射,您可以使用一个数组来保存“第三个非压缩x坐标的递增顺序为198”类型的信息.如果您对实现树感到满意,那么这不应该是一个巨大的负担。