树状数组
来源:互联网 发布:植发失败 知乎 编辑:程序博客网 时间:2024/06/05 06:38
树状数组的组成结构:
树上结点C和A数组的关系:
C结点管辖的区域是,其中k是结点下标二进制末尾0的个数
计算:
int lowbit(int a){ return a&(a^(a-1)); //return a&(-a); }
则对于一颗子树,父节点和子节点的区域关系:. 于是有了这样的更新函数:
int update(int i,int x){ while(i<=n){ //x更新C[i] 如C[i]=C[i]+x; i=i+lowbit(i); }}
求数组A前k项和:
如:
int Sum(int k){ int sum=0; while(k>0){ sum+=C[k]; k=k-lowbit(k); } return sum;}
例题:
hdu 2838
hdu 2689
0 0
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 查找同构数的数量
- 把R里面的数据导入到mysql数据库的两种方式
- 关于Big Endian 和 Little Endian
- VirtualProtect()
- Android Studio 不能打开
- 树状数组
- Github开源控件BadgeView(消息数字提醒)
- 入门训练 Fibonacci数列
- Java面向对象知识总结
- android获取联系人权限,然后从日志中打印输出联系人姓名和电话
- ousahayashi's array practice!
- hdu1040 As Easy As A+B
- 校赛Round1 1004 防AK的数字
- PreparedStatement的使用----JDBC-2