1 条题解

  • 0
    @ 2025-10-14 9:17:17
    #include <bits/stdc++.h>
    using namespace std;
    long long a[1000020];
    long long t[1000020];
    int n, q;
    int lowbit(int idx) { return idx & (-idx); }
    void add(int idx, long long v) {
        while (idx <= n) {
            t[idx] += v;
            idx += lowbit(idx);
        }
        return;
    }
    long long query(int l, int r) {
        long long sum = 0;
        while (r != 0) {
            sum += t[r];
            r -= lowbit(r);
        }
        while (l != 0) {
            sum -= t[l];
            l -= lowbit(l);
        }
        return sum;
    }
    int main() {
        ios::sync_with_stdio(false);
        cin.tie(nullptr);
        cin >> n >> q;
        for (int i = 1; i <= n; i++) {
            cin >> a[i];
            add(i, a[i]);
        }
        while (q--) {
            int flag, x, y;
            cin >> flag >> x >> y;
            if (flag == 1) {
                add(x, y);
            } else {
                cout << query(x - 1, y) << endl;
            }
        }
        return 0;
    }
    
    • 1

    信息

    ID
    1246
    时间
    3000ms
    内存
    256MiB
    难度
    (无)
    标签
    (无)
    递交数
    0
    已通过
    0
    上传者