简介:
树状数组是一种维护前缀和、区间和的数据结构。它在原数组上添加索引,从而高效维护数据。 神奇而小巧的数据结构,树状数组的下标必须从1开始!无论是他的修改还是查询,时间复杂度永远都是 logn,适合用于做区间和,前缀和,单点修改比前缀和标准做法的修改快一些
原理:
树状数组引入了分级管理制度,设置一个管理小组,每个管理员管理一个或多个连续的元素。 例如,数列有16个元素,分别用a[1],a[2],…,a[16]存储,管理数组为c[]。管理数组c[]是树状的,因 此称为树状数组
索引:
lowbit:将一个数转化为他的二进制,返回二的二进制下原数的末尾零次方,一个数的lowbit值就是他索引的数据个数
eg:
lowbit(5):因为十进制下的5转为二进制为101,末尾零个个数为零 , 所&nbs