树状数组算法分析
来源:互联网 发布:人民子弟兵 知乎 编辑:程序博客网 时间:2024/06/10 19:29
最近经常碰到树状数组的问题, 就不如写一写对这个算法的理解吧;
先偷一张图:
大概理解就是, 对于 c[]数组 是整个树状数组里的灵魂, 也可是tree[] 数组, 其实A[] 数组 是不存在的(可以这么理解 ) 借势,
C[8]= C[4] + C[6] + C[7] + A[8]
而 C[4] = C[2] +C[3] + A[4]
C[6] = C[5] + A[ 6]
对于 从 8 -4-6-7 这些数 经历的变化 用k 来表示, 二进制啥的 一系列转化
变成这个:
k&(-k);
K 在变化, 但是变化的工程中就把所有的都访问了, 一级管一级的意思,
树状数组维护:
'
void add(int k,int num)//维护添加值{while(k<=2*n){tree[k]+=num;k+=k&(-k);// lowbit(k)= k&(-k);}}
求 区间[1-x]的和
int Sum(int x)//求区间[1,x] 的和{int sum=0;while(x){sum+=tree[x];x-=x&(-x);}return sum;}求 x - y 的和
int Get_sum(int y,int x)// x-y区间的和{return Sum(y)-Sum(x);}
一般 的用法, 如果 我要求 x-- y 之间 的数值和, 我可以 先对add(y,1); 使 y 前面的 都 +1; 然后add(x,-1); 对x 前面的都-1 然后 x ,y 之间的 就是结果
阅读全文
0 0
- 树状数组算法分析
- 树状数组算法分析
- 树状数组详细分析
- 算法理解-树状数组
- 算法摘记 树状数组
- 算法模版 树状数组
- 树状数组算法
- 树状数组 原理及分析
- 算法复习之------树状数组
- 树状数组----算法高级专题
- acm算法之树状数组
- 算法学习—树状数组
- 算法(十三)树状数组
- POJ2763-LCA在线算法+树状数组
- 渣渣算法初步回顾---树状数组
- hdu2673在线LCA算法+树状数组
- 算法基础 - 树状数组(binary indexed tree)
- 算法学习——树状数组
- C语言之树
- Centos 安装 Nginx 负载均衡
- dialog底部显示
- Java代码书写风格及一些简单的注意事项
- CSU
- 树状数组算法分析
- Notes on Latex lshort
- QList / QVector 内存释放
- [NOI2005] 聪聪与可可
- 《零基础入门学习Python》学习过程笔记【020函数的局部变量和全全局变量内部函数和闭包】
- 框架学习之spring整合struts2、hibrenate-03声明式事务
- hdu 6035 Colorful Tree
- jquery dom和css设置元素内容
- Java内存存储方式