全wa求调
  • 板块P2068 统计和
  • 楼主tc291311
  • 当前回复1
  • 已保存回复1
  • 发布时间2025/7/23 19:44
  • 上次更新2025/7/24 09:16:25
查看原帖
全wa求调
1340395
tc291311楼主2025/7/23 19:44

rt

#include<bits/stdc++.h>
#define endl '\n'
#define int long long
using namespace std;
const int N=1e7+5;
int n,m,a[N],t[N*4];
void pushup(int k){
	t[k]=t[k*2]+t[k*2+1];
}
void build(int k,int l,int r){
	if(l==r)	t[k]=a[l];
	else{
		int mid=l+(r-l)/2;
		build(k<<1,l,mid);
		build(k<<1|1,mid+1,r);
		pushup(k);
	}
}
void updata(int p,int v,int l,int r,int k){
	if(l==r){
		a[k]+=v;
		t[k]+=v;
	}
	else{
		int mid=l+(r-l)/2;
		if(p<=m){
			updata(p,v,l,mid,k<<1);
		}
		else updata(p,v,mid+1,r,k<<1|1);
		pushup(k);
	}
}
int query(int l,int r,int L,int R,int k){
	if(l>=L&&r<=R){
		return t[k];		
	}
	int sum=0;
	int mid=L+(R-L)/2;
	if(l<=m){
		sum+=query(l,r,L,mid,k>>1);
	}
	if(r>m){
		sum+=query(l,r,mid+1,R,k>>1|1);
	}
	return sum;
}
signed main(){
    ios::sync_with_stdio(0);
    cin.tie(0),cout.tie(0);
	cin>>n>>m;
	build(1,1,n);	
	while(m--){
		char op;
		cin>>op;
		if(op=='x'){
			int a,k;
			cin>>a>>k;
			updata(a,k,1,n,1);
		}
		else{
			int a,b;
			cin>>a>>b;
			cout<<query(a,b,1,n,1)<<endl;
		}
	}
	return 0;
}
2025/7/23 19:44
加载中...