树状数组模板

树状数组

树状数组用起来的时间复杂度为O(logn)、操作一共有以下两种:

1、给某个位置上的数加上一个数

void add(int x, int v)
{
    for (int i = x; i <= n; i += lowbit(i)) tr[i] += v;
}

2、求某一个前缀和

int query(int x)
{
    int res = 0;
    for (int i = x; i; i -= lowbit(i)) res += tr[i];
    return res;
}

3、附加lowbit操作

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

2、具体分析(略)

posted @ 2021-03-01 15:05  Frank_7  阅读(66)  评论(0编辑  收藏  举报