1. 程式人生 > 其它 >[資料結構]樹狀陣列

[資料結構]樹狀陣列

技術標籤:資料結構總結

單點修改區間和查詢

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define maxn 500005
int n;
ll a[maxn];
ll query(int x)
{
    ll sum = 0;
    while(x){
        sum += a[x];
        x -= x & -x;
    }
    return sum;
}
void add(int x, int k)
{
    while (x <= n){
        a[
x] += k; x += x & -x; } } int main() { int m, x; scanf("%d %d", &n ,&m); for (int i = 1; i <= n; ++i){ scanf("%d", &x); add(i, x); } while (m--){ int p, l, r; scanf("%d %d %d", &p, &
l, &r); if (p == 1) add(l, r); else printf("%lld\n", query(r) - query(l - 1)); } return 0; }