树状数组
来源:互联网 发布:c语言算法教程 编辑:程序博客网 时间:2024/06/07 07:19
树状数组是一种修改和求和都为O(logn)的数据结构
c[i]表示 A[i-2^k+1]到 A[i]的和。 2^k=i&(i^(i-1))
当我们修改 A[i]的值时,C[i]往跟节点一路上溯
int lowbit(int k) //下标从1开始
{
return i&(i^(i-1));
}
void insert(int k,int d,int max)
{
while(k<=max) 插入A[k]的值 d
{
C[i]+=d;
k+=lowbit(k);
}
}
int getsum(int pos)
{
int t=0;
while(pos>0)
{
t+=C[pos];
pos-=lowbit(pos);
}
return t;
}
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- CvMat* points = cvCreateMat( sample_count, 1, CV_32FC2 );cvReleaseMat( &points );
- Visitor访问者模式
- app_news.xml
- Freebsd下面软件信息命令
- app_home_item.xml1
- 树状数组
- Linux中的两种文件锁—协同锁与强制锁
- app_home_item.xml 2
- linux字符设备
- *_cast类型转换
- vc操作excel历程(vs2008+excel2007)
- contants
- 顺序表的练习
- WPF DataGrid 获取选中 一行 或者 多行