标签:一半 树状数组 sub 树状 nbsp 归并排序 标记 bfs 端点
lowbit(i)=i & -i
ci=i-lowbit(i)+1 ~ i
c1 2 3 4 5 6 7 8...
for(1~i) sum+=ci
区间加值:i+lowbit(i)
while(i!=0) { sum+=c[i]; }
区间修改
在两个端点各加一个标记
求1~i
前缀和 sumi
sumi
像归并排序一样,把所有数据反复切一半
那么叶子节点即为原数
按照BFS的顺序将这棵树编号
可以发现,每个非叶子节点的左儿子的编号是其两倍,右儿子的编号
标签:一半 树状数组 sub 树状 nbsp 归并排序 标记 bfs 端点
原文地址:https://www.cnblogs.com/send-off-a-friend/p/11304608.html