樹狀數組

1.spa

從二進制下能夠看出到某一點的前綴和爲idx不斷去掉一個'1'造成的新索引下的區間和,獲取最後一個'1'code

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

2.blog

查詢[L,R]之間的和索引

sum(R)-sum(L-1)it

單次查詢次數=log2(10^5)=17class

單次查詢時間複雜度:O(logN)二進制

int sum(int x)
{
    int res = 0;
    for (; x; x -= lowbit(x))
    {
        res += tree[x];
    }
    return x;
}

3.單點更新查詢

void add(int x, int v)
{
    for (; x <= MaxVal; x += lowbit(x))
    {
        tree[x] += v;
    }
}

單次查詢次數=log2(10^5)=17di

單次查詢時間複雜度:O(logN)時間

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息