树状数组
来源:互联网 发布:厦门大学网络教育 编辑:程序博客网 时间:2024/06/05 11:15
树状数组(Binary Indexed Tree)是一个用数组表示的树形结构,用来处理下面一类常见问题:
已知数组A[1,n],我们在线对其进行:(1)修改某个元素A[i] (2)查询某个区间A[i...j]的元素和
具体可以参考文章《树状数组总结》,此外网站topcoder社区中上也有相关博客讲解了这个数据结构并且在解析里面有代码。
下面仍然是自己归纳的模板
int a[_max];//统计a[0...t]中元素的和int sum(int t){ int ans = 0; while(t > 0){ ans += a[t]; t -= t&(-t); } return ans;}//修改元素使得 a[t] += deltavoid update(int t, int delta){ while(t < _max){ a[t] += delta; t += t&(-t); }}
我们利用上面的模板可以用来解决Hackerrank上另外一道题目Insertion Sort Advanced Analysis ,这道题目是问插入排序需要移动多少次元素,一种方法是由于移动总次数等于元素逆序对数目,可以用稍微修改归并排序的算法来统计。还有一种方法就是上面的树状数组。
此外树状数组的功能可以用线段树代替。
0 0
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- C/C++堆和栈的区别
- URIs, URLs, and URNs
- 树莓派(raspberry pi)学习4: 更改键盘布局
- IIS信息服务器&花生壳网站发布及总结
- leetcode_Permutations II _hard_暴力枚举法--回溯法
- 树状数组
- PyCharm 教程(五)断点 调试
- 数据库集群技术漫谈
- 服务器负载均衡的基本功能和实现原理
- Dome of Circus - UVa 1473 几何 凸包
- 常见的连续概率密度函数
- C++ 多重继承,虚析构确定
- 一个android列表的适配器数据异步加载的问题
- 网站开发流程