考虑一个由n 个正实数组成的序列 ( a i ) 及其部分和序列 ( s i )。给定一个数x ∊ (0, s n ],我们必须找到i使得s i −1 < x ≤ <em>s i。此外,我们希望能够更改其中一个a i,而不必更新所有部分和。两者都可以通过使用带有a i的二叉树在 O(log n ) 时间内完成's 作为叶节点值,非叶节点的值是各个子节点值的总和。如果n已知且固定,则树不必是自平衡的,并且可以有效地存储在线性数组中。此外,如果n是 2 的幂,则只需要 2 <em>n - 1 个数组元素。参见 Blue 等人,Phys。Rev. E 51 (1995), pp. R867–R868 申请。鉴于问题的通用性和解决方案的简单性,我想知道这个数据结构是否有特定的名称以及是否有现有的实现(最好是 C++)。我自己已经实现了它,但是从头开始编写数据结构对我来说似乎总是在重新发明轮子——如果以前没有人做过,我会感到惊讶。
问问题
2290 次