萌新刚学OI,求救树状数组
查看原帖
萌新刚学OI,求救树状数组
338786
mushroom_knight楼主2020/5/31 09:27

RT,测试样例输出了-12870

#include<bits/stdc++.h>
using namespace std;
int t[600001];
int a[500001];
int n,m;
int lowbit(int i){
	return i&-i;
}
void modify(int x,int y){
	for(register int i=x;i<=y;i+=lowbit(i)){
		t[i]+=y;
	}
}
int find(int x){
	int ans=0;
	for(register int i=x;i;i+=lowbit(i)){
		ans+=t[x];
	}
	return ans;
}
void init(){
	for(register int i=1;i<=n;++i){
		modify(i,a[i]);
	}
}
int cmd,x,y;
int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	cin>>n>>m;
	for(register int i=1;i<=n;++i){
		cin>>a[i]; 
	}
	init();
	for(register int i=1;i<=m;++i){
		cin>>cmd>>x>>y;
		if(cmd==1){
			modify(x,y);
		}
		else{
			cout<<find(y)-find(x-1);
		}
	}
	return 0;
}

2020/5/31 09:27
加载中...