您的位置:首页 > 其它

树状数组(BIT)

2017-07-02 20:00 288 查看
给一个初始值全为0的数列a[1],a[2],...a
,能够在O(logn)时间内完成以下操作

1)给定i,计算a[1]+a[2]+...+a[i]

2)给定i和x,执行a[i]+=x

代码:

//区间[1,n]
int bit[max_n+1],n;

int sum(int i)
{
int s=0;
while(i>0)
{
s+=bit[i];
i-=i&-i;
}
return s;
}

void add(int i,int x)
{
while(i<=n)
{
bit[i]+=x;
i+=i&-i;
}
}


             
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: