树状数组

前言

树状数组:用数组来描述树结构,但并非满二叉树
![图片说明](https://uploadfiles.nowcoder.com/images/20200524/619207044_1590252531222_F9EF09D499DAFA517565B741A3A87859 "树状数组")
如图所示,树C与数组A有如下关系:

C[1] = A[1]
C[2] = A[1] + A[2]
C[3] = A[3]
C[4] = A[1] + A[2] + A[3] + A[4]
C[5] = A[5]
C[6] = A[5] + A[6]
C[7] = A[7]
C[8] = A[1] + A[2] + A[3] + A[4] + A[5] + A[6] + A[7] + A[8]

可以归纳为

比如6=110,从低位到第一个非0是2,c[6]= A[6]+A[5]
利用负数存储的性质 可以得到


这是一个专门的函数,名为lowbit,即取2^k。

//待续。。。。