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];
微信扫一扫
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];
相关推荐