BIT树,求大佬检查
  • 板块学术版
  • 楼主加载错误
  • 当前回复0
  • 已保存回复0
  • 发布时间2020/7/24 21:46
  • 上次更新2023/11/6 22:22:18
查看原帖
BIT树,求大佬检查
35971
加载错误楼主2020/7/24 21:46
#include<iostream>
#include<cstring>
#define lbt(x) ((x) & (-x))
#define mst(a,b) memset(a,b,sizeof(a))
#define fr(a,b) for(int i = a;i <= b;i++)

using namespace std;

const int X = 1e6 + 10;
int a[X],d[X],t[X];
int n,q;

void add(int p,int x){
	for(int i = p;i <= n;i += lbt(i)){
		t[i] += x;
	}
}

int getnum(int x){
	int s = 0,p = x;
	while(p){
		s += t[p];
		p -= lbt(p);
	}
	return s;
}

int main(){
	while(cin>>n>>q){
		mst(t,0);
		fr(1,n){
			int x;
			cin>>x;
			add(i,x);
		}
		fr(1,q){
			int cmd,x,y;
			cin>>cmd>>x>>y;
			if(cmd == 1){
				if(y){
					add(x,y);
				}
			}
			else{
				cout<<getnum(y) - getnum(x - 1)<<endl;
			}
		}
	}
}
2020/7/24 21:46
加载中...