0分树状数组求调
查看原帖
0分树状数组求调
670998
Neven楼主2023/7/26 21:26
#include<bits/stdc++.h>
using namespace std;
const int N = 5e5 + 5;
int n, m, num[N], op, x, y, a[N], ans;
int lowbit(int num){
	return num & (-num);
}
void add(int pos, int num){
	for(int i = pos; i <= n; i += lowbit(i)) a[i] += num;
}
int search(int st, int ed){
	for(int i = ed; i; i -= lowbit(i)) ans += num[i];
	for(int i = st - 1; i; i -= lowbit(i)) ans -= num[i];
	return ans;
}
int main(){
	cin >> n >> m;
	for(int i = 1; i <= n; i++){
		cin >> num[i];
		add(i, num[i]);
	}
	while(m--){
		cin >> op >> x >> y;
		if(op == 1){
			add(x, y);
		}else{
			ans = 0;
			cout << search(x, y) << endl;
		}
	}
	return 0;
}

2023/7/26 21:26
加载中...