c [ x ] = ( x - lowbit (x) , x ] ;
lowbit(x): x 的二进制表示中,最后有 k 个 0 , lowbit(x)=2^k.
第几层就看二进制表示中0的个数。
树状数组:
1、在某个位置上加上一个数 A[x]+v
for(int i=x;i<=n;i+=lowbit(i))
c[x]+=v;
2、求某一个前缀和
int res=0;
for(int i=x;i>=0;i-=lowbit(x))
res+=c[i];
树状数组和线段树
阅读 70
2022-03-31
c [ x ] = ( x - lowbit (x) , x ] ;
lowbit(x): x 的二进制表示中,最后有 k 个 0 , lowbit(x)=2^k.
第几层就看二进制表示中0的个数。
树状数组:
1、在某个位置上加上一个数 A[x]+v
for(int i=x;i<=n;i+=lowbit(i))
c[x]+=v;
2、求某一个前缀和
int res=0;
for(int i=x;i>=0;i-=lowbit(x))
res+=c[i];
相关推荐
精彩评论(0)