首页 > 编程语言 > 详细

树状数组基本模板

时间:2015-03-25 20:55:19      阅读:188      评论:0      收藏:0      [点我收藏+]

树状数组可以很方便地实现数组的动态修改求和,并且代码量非常小!经过拓展之后,还可以实现区间修改单点查询、求区间最值和第 K 大值(继续学习之后再更新)

 

基本功能的实现主要有三个函数,lowbit 、 add 、 getsum;

 1 int lowbit(int x){return x&(-x);}
 2 //lowbit函数,决定下一个/上一个覆盖区间
 3 
 4 void add(int x,int a){
 5     for(int i=x;i<=N;i+=lowbit(i))c[i]+=a;
 6 }
 7 //单点加数
 8 
 9 int sum(int x){
10     int ans=0;
11     for(int i=x;i>0;i-=lowbit(i))ans+=c[i];
12     return ans;
13 }
14 //区间求和

 

树状数组基本模板

原文:http://www.cnblogs.com/cenariusxz/p/4366714.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!