树状数组
2015-11-17 23:53
330 查看
学习原因:正常的数组更新数组中一个区间的值的时间复杂度是O(n),树状数组则将一个数组转化成一个树形结构,这样每次更新的时间复杂度是O(log(n)),时间复杂度大大降低
模板:
原文链接:http://dongxicheng.org/structure/binary_indexed_tree/
模板:
/** 求2的次方 */ int lowbit(int t) { return t&(-t); } /** 求前n项和 sum(x)=A[1]+A[2]+ ...+A[x] A[i] + A[i+1] + … + A[j] = sum(j)-sum(i-1) */ int sum(int x) { int sum=0; while(x>0) { sum+=in[x]; x-=lowbit(x); } return sum; } /** 更新某个元素的大小 A[pos]+=num */ void add(int pos,int num) { while(pos<=n) { in[pos]+=num; pos+=lowbit(pos); } }
原文链接:http://dongxicheng.org/structure/binary_indexed_tree/
相关文章推荐
- 3032-杨辉三角
- jmail + c#实现邮件的接收
- ELK学习8_ELK数据流传输过程_问题总结1
- 从相册选取图片
- laravel学习笔记二
- 南大软院大神养成计划-第二天
- cin 和 getchar()
- Android屏幕适配分享
- python中的三个读read(),readline()和readlines()
- java线程池简述
- 各种 真机远程调试 方法 汇总
- 泛型第二遍
- Alpha阶段个人贡献分及转会人员确定
- salt Syndic 的实现
- 英音美音加拿大发音区别大盘点
- [Objective-C]NSLog与printf的区别
- Qt环境搭建(Qt Creator)
- Qt环境搭建(Qt Creator)
- 内网渗透一:利用Xss漏洞进入内网
- css网页布局基础