加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

【模板】树状数组

发布时间:2020-12-14 04:39:44 所属栏目:大数据 来源:网络整理
导读:int n; const int maxn = 100010 ; int a[maxn]; int sum1[maxn]; int sum2[maxn];inline int lowbit( int x){ return x (- x);}inline void updata( int i, int k){ int x = i; while (i = n) { sum1[i] += k; sum2[i] += k * (x - 1 ); i += lowbit(i); }}
int n;
const int maxn = 100010;
int a[maxn];
int sum1[maxn];
int sum2[maxn];

inline int lowbit(int x)
{
    return x & (-x);
}

inline void updata(int i,int k)
{
    int x = i;
    while (i <= n)
    {
        sum1[i] += k;
        sum2[i] += k * (x - 1);
        i += lowbit(i);
    }
}

inline int get_sum(int i)
{
    int res = 0;
    int x = i;
    while (i > 0)
    {
        res += x * sum1[i] - sum2[i];
        i -= lowbit(i);
    }
    return res;
}

int main()
{
    //输入n
    for (int i = 1; i <= n; i++)
    {
        //输入a[i]
        updata(i,a[i] - a[i - 1]);
    }
    int l,r,t;
    //输入l,t
    //[l,r]区间加t
    updata(l,t);
    updata(r + 1,t);
    //输入l,r
    int sum;
    //询问[l,r]区间和
    sum = get_sum(r) - get_sum(l - 1);
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读