树状数组


思想由来

对于一个序列的以下两种操作:

  1. 求前缀和
  2. 修改某一个数

按照以往方法,具有两种解决策略:

  1. 使用数组,求前缀和是\(O(n)\)的,修改一个数的是\(O(1)\)
  2. 使用前缀和数组,求前缀和是\(O(1)\)的,修改一个数是\(O(n)\)

树状数组对两种操作的复杂度做出均衡,使得每种操作都是\(O(logn)\)