树状数组的模板
2017-08-09 21:23
204 查看
//树状数组的模板; int lowbit(int i){ return i&(-i); }//lowbit(i)=2^k(其中k为i在二进制下末尾0的个数) //下面的代码给原数组的下标为pos的位置上的元素a[pos]加上一个数num; void update(int pos,int num){ while(pos<=n){//n为元素的个数 c[pos]=c[pos]+num; pos+=lowbit(pos); } } //计算原数组A[1]到a[x]的和; int sum(int x){ int sum=0; while(x>0){ sum+=c[x]; x-=lowbit[x]; } return sum; } //二维树状数组 //作用:用于快速求数字的子矩阵的和; void uodate (int i,int j,int k){//给a[i][j]加上k while(i<=n){ int temp=j; while(temp<=n){ c[i][temp]+=k; temp+=lowbit(temp); } i+=lowbit(i); } } int sum(int i,int j){//查询a[1][1]到a[i][j]的和 int sum=0; while(i>0){ int temp=j; while(temp>0){ sum+=c[i][temp]; temp-=lowbit(temp); } i-=lowbit(i); } return sum; }
相关文章推荐
- 树状数组模板2——区间修改,单点查询
- 二维树状数组模板
- 洛谷P3374 【模板】树状数组 1
- NYOJ 116 士兵杀敌(二)(树状数组模板)
- 【树状数组】专题+模板
- 树状数组模板(max,min,区间和,区间修改,单点查询)
- 洛谷 3380 【模板】二逼平衡树(树状数组套权值线段树)
- poj1195及二维树状数组模板
- 树状数组 背包 模板
- 树状数组模板
- 树状数组模板3——求逆序对
- P3374 【模板】树状数组 1 单点修改与区间查询
- 树状数组模板
- poj2299Ultra-QuickSort【树状数组求逆序数、离散化】、【归并排序模板】
- HDU 1166 敌兵布阵(树状数组模板)
- 树状数组模板
- 【模板】树状数组求逆序对
- hdu 3584 二进制0,1反转 三维树状数组 及三维树状数组模板
- 【模板】树状数组
- 敌兵布阵---hud1166(线段树或者树状数组模板)