首页 > 其他 > 详细

Binary Indexed Trees Templates

时间:2014-02-09 16:43:26      阅读:311      评论:0      收藏:0      [点我收藏+]
bubuko.com,布布扣
//memset c 0 before use
int c[MAXN];

//n -> update place
//v -> update value
void update(int n,int v)
{
    for(;n<=MAXN;n+=(n&-n))
        c[n]+=v;
}

//get the sum from 1 to n (BIT starts from 1)
int read(int n)
{
    int sum=0;
    for(;n>0;n-=(n&-n))
        sum+=c[n];
    return sum;
}
//if need oprate different array, use int* array

/////////////////////////////////////////////

int c[MAXX][MAXY];

//update at (x,y)
void update2D(int x,int y,int v)
{
    for(;x<=MAXX;x+=(x&-x))
        for(int i=y;i<=MAXY;i+=(i&-i))
            c[x][i]+=v;
}

//get the sum from (1,1) to (x,y)
int read2D(int x,int y)
{
    int sum=0;
    for(;x>0;x-=(x&-x))
        for(int i=y;i>0;i-=(i&-i))
            sum+=c[x][i];
    return sum;
}
bubuko.com,布布扣

Binary Indexed Trees Templates

原文:http://www.cnblogs.com/unisolate/p/3541438.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!