0
点赞
收藏
分享

微信扫一扫

树状数组和线段树

Ewall_熊猫 2022-03-31 阅读 68

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 条评论