algorithm - 找出所有不与该点重叠的区间

标签 algorithm computational-geometry

我的间隔格式为(a1, b1), (a2, b2), ...., (an, bn)
我愿意支持以下操作

  1. 添加新间隔。
  2. 删除现有间隔。
  3. 给定一个点,找到与该点不重叠的所有区间。

如果我们想找到与点重叠的区间,区间树是最简单的解决方案。当我们想要找到不相交的区间时该怎么办?

最佳答案

同时拥有两棵树中的所有节点。树 A 通过键 ai 保存它们,树 B 通过键 bi 保存它们。
插入和删除显然是O(log n)
对于要求3,从最小到最大打印B中的节点,当bi仍然小于该点时停止。相同,但倒退,在 A 中。

示例:
给定 (1,10)、(5,18)、(13,20) 和一个点 12
A 中 ai 大于 12 的区间是 (13,20),而 B 中的区间是 (13,20)较小的是(1,10)

关于algorithm - 找出所有不与该点重叠的区间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31596248/

相关文章:

python - 如何优化算法以更快地找到具有fuzzywuzzy的相似字符串?

algorithm - Minimax算法讲解

c++ - 将两个参数传递给 remove_if 谓词

c++ - 如何使用二维矩形缓冲区沿二维线段限制搜索空间

python - 迭代多维数组并搜索形成正方形的点

python - 凸包和 SciPy

computational-geometry - 简单多边形内的小圆

python - 实现快速排序并得到一个我不明白的错误

c++ - 二维中一组点中以 X 轴为底的最大空矩形

algorithm - 我的 dp 方法的错误在哪里? https ://www. spoj.com/problems/AE00/