树状数组

来源:互联网 发布:万销淘宝店铺装修工具 编辑:程序博客网 时间:2024/06/02 00:55

在学习逆序数计算的时候,看到了用树状数组来计算,树状数组是一种数据结构,和并查集的概念类似。
定义完一个数组后,再定义三个函数操作,从而变成树状数组。使得 一个数组改变某个元素和求和两种操作都是O(logn)

http://www.cppblog.com/Ylemzy/articles/98322.html

//求最小幂2^k: int Lowbit(int t){    return t & ( t ^ ( t - 1 ) );} //求前n项和:int Sum(int end){    int sum = 0;    while(end > 0)    {        sum += in[end];        end -= Lowbit(end);    }    return sum;} // 对某个元素进行加法操作: void plus(int pos , int num){    while(pos <= n)    {          in[pos] += num;          pos += Lowbit(pos);    }} 
原创粉丝点击