树状数组的小总结
2016-03-24 22:47
253 查看
1.树状数组在很多情况下可以替代线段树,而且树状数组的代码简洁好写,所以能用树状数组的地方我还是会树状数组而不是线段树;
2.树状数组的常用的函数有以下这些:
3.某些题目的区间修改可以改成点修改,然后区间查询如hdu1556,poj2155(二维的树状数组好神奇);
2.树状数组的常用的函数有以下这些:
int lowbit(int x) { return x&(-x); }
void update(int x,int num) { while(x<=n) { sum[x]+=num; x+=lowbit(x); } } /*从下往上修改,对应线段树的点修改*/ int query(int x) { int s=0; while(x>0) { s+=sum[x]; x-=lowbit(x); } return s; } /*从上向下统计,对应线段树的区间统计*/ void update(int x,int num) { while(x>0) { d[x]+=num; x-=lowbit(x); } } /*从上往下修改,需要两次,第二次要把多加的区间减掉我感觉像是线段树的lazy标记,不知道对不对*/ int getSum(int x) { int s=0; while(x<=N) { s+=d[x]; x+=lowbit(x); } return s; } /*点查询,从下向上统计,对应线段树的点查询要加上lazy标记*/
3.某些题目的区间修改可以改成点修改,然后区间查询如hdu1556,poj2155(二维的树状数组好神奇);
相关文章推荐
- 5 分钟上手 ECharts(echart官网转载)
- 用程序打印万年历
- 字符串分离方法
- RSA 数字签名 免密码登录
- PHP为什么会被认为是草根语言?
- 泛型(三)
- WAF安恒
- Wooden Sticks
- 入职体检之遇到婵婵
- WCF部署于IIS使用的几个问题总结
- 无唯一性字段情况下,双表关联更新数据方案
- 最大公约数
- The following classes could not be found: - android.support.v7.internal.widget.ActionBarOverlayLayou
- Light oj1138 - Trailing Zeroes (III)
- 读写 .plist 文件的代码例子
- 2、ROS使用工作空间
- 1012 incryptography
- python学习笔记-Day19 -django(第一部分)
- POJ 2452 Sticks Problem(RMQ+二分)
- OPENCV图像处理基础(五)鼠标事件画个框