1 条题解

  • 0
    @ 2025-3-19 21:42:50
    #include <bits/stdc++.h>
    #define endl '\n'
    using namespace std; 
    using ll = long long;
    using ULL = unsigned long long;
    const int N = 1e6+5;
    
    int n, q;
    ll a[N],t[N];
    
    inline int lowbit(int x) {return x & (-x);}
    
    inline void update(int k,ll x) {
        for (int i = k; i <= n; i += lowbit(i)) 
            t[i] += x;
    }
    
    inline ll getsum(int k) {
        ll res = 0;
        for (int i = k; i > 0; i -= lowbit(i))
            res += t[i];
        return res;
    }
     
    inline void solve() {
        cin >> n >> q;
        for (int i = 1; i <= n; i++) cin >> a[i];
        for (int i = 1; i<= n; i++) update(i,a[i]);
    
        for (; q-- ;){
            int op; cin >> op;
            if (op == 1) {
                ll k, v; cin >> k >> v;
                update(k,v);
            }else {
                ll l, r; cin >> l >> r;
                cout << getsum(r) - getsum(l - 1) << endl;
            }
        } 
    
    
    }
    
    int main() { 
        ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
        int _ = 1; 
        //int _; cin >> _; 
        while (_--) solve();
        return 0;
    }
    
    
    • 1

    信息

    ID
    111
    时间
    3000ms
    内存
    512MiB
    难度
    8
    标签
    递交数
    63
    已通过
    11
    上传者