树状数组和线段树

复杂度:
O(logn)

功能:

  1. 单点修改
  2. 区间查询

代码实现

    • 数组下标一定要从1开始
    • 所有奇数下标与原数组相等
    • 所有偶数下标存储一段数之和
      规则:
  • C[x]=[x-2**k,x],x的二进制表示末尾有k个零
  • lowbit(x)=2**k
点击查看代码
lowbit(x)=x & -x
c[x]=[x-lowbit(x),x]

4. 单点修改
点击查看代码
A[x]+v
for(i=x;i<=n;i+=lowbit(i)),c[x]+=v
5. 区间查询
点击查看代码
int res=0;
for(1=x;i>0;i-=lowbit(i))
res+=c[i]

posted on 2025-04-05 14:13  你看哪儿呢  阅读(8)  评论(0)    收藏  举报

导航