码迷,mamicode.com
首页 > 编程语言 > 详细

树状数组 线段树

时间:2019-08-05 18:57:41      阅读:99      评论:0      收藏:0      [点我收藏+]

标签:一半   树状数组   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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!