1.性质
普通的前缀和数组si=ai+ai-1+ai-2+……+a1
当我们需要查询si时,其时间复杂度为O(1)
但当我们想要修改ai的数值时,我们需要需改si及以后的所有前缀和的值直到sn
修改的时间复杂度为O(n)
- 树状数组是修改过后的前缀和数组,其查询和修改的时间复杂度都为O(logn)
- 树状数组前缀和是前面几项的和,不是前面所有的和
lowbit(i)为i的二进制表示非零最低位的位权
eg:- lowbit(8) 8 = 1000 非零最低位权为8
- lowbit(6) 6 = 0110 非零最低位权为2
- c8 = a8+a7+a6+a5+……+a1
- c6 = a6+a5
2.修改操作
当要修改ai的值,就需要修改ci往后所有包含ai的c
需要修改的ci为:
ci<