algorithm - 线段树 : amount of numbers smaller than x

标签 algorithm segment-tree

我正在尝试解决 this问题。

我找到了 tutorial对于这个问题,但我不知道如何构建线段树,它会在 O(log n) 中找到小于 x 的数字量(x 可以更改)。在教程中它已被省略。

谁能告诉我怎么做?

最佳答案

很简单:

  1. 存储特定节点覆盖范围内所有数字的排序数组
    (O(n * log n)内存和初始化时间)。

  2. 要回答查询,将查询段分解为 O(log n) 节点(与标准最小/最大/总和段树的处理方式相同)并运行对存储在每个节点中的数组进行二进制搜索,以查找小于 x 的元素数。它为每个查询提供 O(log^2 n) 时间。您也可以使用分数级联实现 O(log n),但这不是必需的。

关于algorithm - 线段树 : amount of numbers smaller than x,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27798383/

相关文章:

c++ - 在线区间并集的长度

c - 有没有一种特殊的方法可以从 c 中的文件中删除记录而不创建它的副本?

c++ - 算法 - 圆阵旋转

windows - Shlwapi.dll中的HashData是基于什么哈希算法?

java - 约束满足问题实现的回溯搜索

algorithm - 如何确定一个范围内有多少元素在另一个给定范围内?

c++ - 我收到此代码的段错误?

algorithm - 什么是好的哈希函数?

algorithm - 如何实现混凝土红青浮雕眼镜显示器的红色和青色校准程序?

arrays - 特定范围内数字的出现次数?