小编use*_*997的帖子

半径为r的圆的最小数量,以覆盖n个点

覆盖所有n点所需的半径为r的最小圆数是多少?r和n将作为输入给出,接着是n对整数,表示n个点的xy坐标.r是实数且大于0.n <20.

如果该点位于圆内,则圆圈覆盖一个点.如果点与圆心之间的距离小于或等于r,则点位于圆内.

algorithm computational-geometry

18
推荐指数
5
解决办法
7887
查看次数

二维矩阵中的范围更新和查询

我没有场景,但问题就在这里。这简直让我发疯。有一个 nxn 布尔矩阵,最初所有元素均为 0,n <= 10^6 并作为输入给出。接下来将有最多 10^5 个查询。每个查询可以将 c 列的所有元素设置为 0 或 1,或者将 r 行的所有元素设置为 0 或 1。还可以有另一种类型的查询,打印 c 列或 r 行中 1 的总数。

我不知道如何解决这个问题,任何帮助将不胜感激。显然每个查询的 O(n) 解决方案是不可行的。

algorithm data-structures segment-tree

5
推荐指数
1
解决办法
3214
查看次数

计算2个圆圈内的总点数

有2个圆圈,它们的中心是固定的,将作为输入给出.然后将有n个点,其x和y坐标作为输入给出.

最后,将有q个查询.对于每个查询,将给出两个圆的半径(让它们为r1和r2).输出每个查询的第一个圆圈或第二个圆圈内的总点数.如果从点到中心的距离小于或等于圆的半径,则点位于圆内.

约束:n,q <= 10 ^ 6 r1,r2 <= 10 ^ 7,对于每个坐标,| x | 和| y | <= 10 ^ 6

我正在寻找O(nlogn)或O(nlog ^ 2n)预处理,然后是每个查询的O(logn)算法.每个查询的O(n)解决方案太慢了.任何想法如何破解这个?

algorithm data-structures

5
推荐指数
1
解决办法
384
查看次数