段树:小于x的数字量

时间:2015-01-06 12:08:44

标签: algorithm segment-tree

我试图解决this问题。

我找到tutorial来解决这个问题,但是我还没有得到如何构建段树,它会在O(log n)中找到小于x的数字(x可以更改)。在教程中它已被省略。

任何人都可以解释我该怎么做吗?

1 个答案:

答案 0 :(得分:5)

这很简单:

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

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