树状数组总结

来源:互联网 发布:weui js 编辑:程序博客网 时间:2024/06/08 19:14

                                                                                                     树状数组总结

一.树状数组

给一个初始值全为0的数列a1,a2,...,an。

1.给定i,计算a1+a2+...+ai

2.给定i和x,执行ai+=x

树状数组应用:修改某点的值,求某个区间的和

二.模板

int bit[maxn],n;int lowbit(int x){    return (x&-x);}int sum(int i)//返回前i个元素的和{    int s=0;    while(i>0)    {        s+=bit[i];        i-=lowbit(i);    }    return s;}void add(int i,int x)//将A[i]增加x{    while(i<=n)    {        bit[i]+=x;        i+=lowbit(i);    }}

推荐博客:博客链接