Fenwick Tree - Binary Indexed Tree

Tài liệu về cây chỉ số nhị phân

Cập nhật điểm truy vấn đoạn - querysum

C++
#include <bits/stdc++.h>
using namespace std;

#define int long long
const int N = 1e5 + 1;
const int oo = 1e18;
const int MOD = 1e9 + 7;

int BIT[N];

void update(int p, int val) {
    for (int i = p; i < N; i += i & -i)
        BIT[i] += val;
}

int get(int p) {
    int sum = 0;
    for (int i = p; i; i -= i & -i)
        sum += BIT[i];
    return sum;
}

int32_t main(){    
    ios_base::sync_with_stdio(0);
    cin.tie(0);

    int n, q;
    cin >> n >> q;
    for (int i = 1; i <= n; i++) {
        int x; cin >> x;
        update(i, x);
    }
    while (q--) {
        int k;
        cin >> k;
        if (k == 1) {
            int p, val;
            cin >> p >> val;
            update(p, val);
        }
        else {
            int l, r;
            cin >> l >> r;
            cout << get(r) - get(l - 1) << "\n";
        }
    }
}

Cập nhật đoạn truy vấn điểm - CSES Range Update Queries

C++
#include <bits/stdc++.h>
using namespace std;

#define int long long
const int N = 2e5 + 1;
const int oo = 1e18;
const int MOD = 1e9 + 7;

int BIT[N];
int n, q;

void update(int p, int val) {
    for (int i = p; i <= n; i += i & -i)
        BIT[i] += val;
}

int get(int p) {
    int sum = 0;
    for (int i = p; i; i -= i & -i)
        sum += BIT[i];
    return sum;
}

int32_t main(){    
    ios_base::sync_with_stdio(0);
    cin.tie(0);

    cin >> n >> q;
    for (int i = 1; i <= n; i++) {
        int v; cin >> v;
        update(i, v);
        update(i + 1, - v);
    }

    while (q--) {
        int k;
        cin >> k;
        if (k == 1) {
            int l, r, v;
            cin >> l >> r >> v;
            update(l, v);
            update(r + 1, -v);
        }
        else {
            int i;
            cin >> i;
            cout << get(i) << "\n";
        }
    }
}

Bài tập


Bài tập

Bài tập Điểm Tỷ lệ AC Người nộp
Query-Sum 1600p 44,3% 1256
Query-Sum 2 1600p 27,5% 696
Candies 400p 24,6% 334
Bài toán truy vấn tổng 400 52,7% 341



Bình luận

Không có bình luận nào.