飞机上更快的查询

时间:2016-09-07 11:09:37

标签: algorithm optimization query-optimization computational-geometry kdtree

问题我必须支持位于[0,M] x [0,M]的笛卡尔平面中的一组n个2-D点的Q查询。积分是提前给出的。

每个查询都要求我计算矩形(x1,y1)*(x2,y2)中包含的点数。 (轴对齐的矩形)。

约束
0< M< 10000

我想了解更多有关所用算法的信息。我们是否可以使用以下信息更有效地执行这些查询:所有点和查询都是预先提供的点的坐标是有界的等。

变体:我们可以在数据结构中添加n个轴对齐的矩形点作为n添加操作,而不是n个点开头,然后回答相同的查询。 [懒段树种方法]。

1 个答案:

答案 0 :(得分:1)

这是一个经典的2d Binary Indexed Tree问题。二进制索引树可以显示从(0,0)到(x,y)的矩形中有多少个点,现在如果要查找由(x1,y1)和(x2)指示的矩形中有多少个点,y2),首先你必须找到矩形的另外两个角点的坐标。让pUL,pUR,pBL,pBR成为矩形的四个角点,分别代表左上角,右上角,左下角和右下角。通过使用包含 - 排除逻辑,此矩形中包含的点数为。

Here is a list of matching modules.  Enter any module name to get more help.

Failed to write user configuration file.
Please submit a bug report.
sqlalchemy.dialects.postgresql.psycopg2 - .. dialect:: postgresql+psycopg2
sqlalchemy.dialects.postgresql.psycopg2cffi - .. dialect:: postgresql+psycopg2cffi