树状数组

http://community.topcoder.com/tc?module=Static&d1=tutorials&d2=binaryIndexedTrees

翻译版:http://hawstein.com/posts/binary-indexed-trees.html#readcf

这篇文章给出了poj上的例题http://duanple.blog.163.com/blog/static/7097176720081131113145832/

 

需求:希望有一个数组a,可以快速计算连续的一段元素的和,如a[i]+a[i+1]+...+a[j],普通的数组对这种查询的时间是和j-i成正比,如果有k次查询,数组长度为n,最坏情况复杂度为O(nk)

而树状数组经过初始化(大概是O(nlogn),或者更少),可以使得每次查询复杂度为log(n),k次查询就是O(klogn),而且支持动态改变的数组,即可以改变其中的元素

 

posted @ 2013-04-20 21:17  ttang  阅读(170)  评论(0编辑  收藏  举报