help!
查看原帖
help!
367652
Jerrlee✅楼主2021/11/11 11:49

树状数组 22 死得真惨……

code:

#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,m,c[500001],s,a[500001],h,k,x,y;
int lb(int k){
	return k&(-k);
}
void change(int p,int q){
	while(p<=n){
		c[p]+=q;
		p+=lb(p);
	}
}
int sum(int k){
	s=0;
	while(k){
		s+=c[k];
		k-=lb(k);
	}
	return s;
}
signed main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		change(i,a[i]);
	}
	for(int i=1;i<=m;i++){
		cin>>h>>x;
		if(h==1){
            cin>>y>>k;
            change(x,k);
            change(y+1,-k);
        }
		else cout<<sum(x)<<endl;
	}
}

可能错的很伞兵,大佬轻喷

2021/11/11 11:49
加载中...