树状数组和线段树
复杂度:
O(logn)
功能:
- 单点修改
- 区间查询
代码实现
-
- 数组下标一定要从1开始
-
- 所有奇数下标与原数组相等
-
- 所有偶数下标存储一段数之和
规则:
- 所有偶数下标存储一段数之和
- C[x]=[x-2**k,x],x的二进制表示末尾有k个零
- lowbit(x)=2**k
点击查看代码
lowbit(x)=x & -x
c[x]=[x-lowbit(x),x]
点击查看代码
A[x]+v
for(i=x;i<=n;i+=lowbit(i)),c[x]+=v
点击查看代码
int res=0;
for(1=x;i>0;i-=lowbit(i))
res+=c[i]
浙公网安备 33010602011771号