1 해설

  • 2
    @ 2024-1-7 16:55:38

    模板题,代码如下

    #include<bits/stdc++.h>
    #define lowbit(x) ((x) & - (x))
    #define int long long
    using namespace std;
    const int N = 1e6 + 5;
    int tree[N];
    void update(int x, int d){
    	while(x <= N){
    		tree[x] += d;
    		x += lowbit(x);
    	}
    }
    int sum(int x){
    	int ans = 0;
    	while(x > 0){
    		ans += tree[x];
    		x -= lowbit(x);
    	}
    	return ans;
    }
    main(){
    	ios::sync_with_stdio(0);
    	cin.tie(0), cout.tie(0); 
    	int n, Q, a, b = 0;
    	cin >> n >> Q;
    	for(int i = 1; i <= n; i++){
    		cin >> a;
    		update(i, a - b);
    		b = a;
    	}
    	while(Q--){
    		int opt, l, r, x;
    		cin >> opt;
    		if(opt == 1){
    			cin >> l >> r >> x;
    			update(l, x);
    			update(r + 1, -x);
    		}
    		else{
    			cin >> x;
    			cout << sum(x) << endl;
    		}
    	}
    	return 0;
    }
    
    • 1

    정보

    ID
    320
    시간
    3000ms
    메모리
    256MiB
    난이도
    3
    태그
    제출 기록
    174
    맞았습니다.
    58
    아이디