按照Peter M. Fenwick的说法,正如所有的整数都可以表示成2的幂和,我们也可以把一串序列表示成一系列子序列的和。采用这个想法,我们可将一个前缀和划分成多个子序列的和,而划分的方法与数的2的幂和具有极其相似的方式。一方面,子序列的个数是其二进制表示中1的个数,另一方面,子序列代表的f[i]的个数也是2的幂。


树组树组

三个概念

1. Lowest bit number = lowestBitNum(x)

    = x&-x  

     或 = x &(x^(x-1))

2.  后继

     i 的 后继 = i + lowestBitNum (i)

3. 前驱

     i 的前驱 = i - lowestBitNum(i)

两个实现

Sum(i) = i节点 + i 的所有前驱节点

Update(i) = 更新 i 节点 和 所有的后继节点 


相关文章:

  • 2021-10-09
  • 2021-10-12
  • 2021-12-23
猜你喜欢
  • 2021-12-21
  • 2021-10-04
  • 2022-12-23
  • 2022-12-23
  • 2021-11-09
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案