萌新求助
查看原帖
萌新求助
167521
垣根帝督楼主2021/9/13 21:25

RT

#include <bits/stdc++.h>
#define int long long
using namespace std;
#define ls(id) (id<<1)
#define rs(id) (id<<1|1)
const int maxn=100005;
int n,m;
int opt,l,r,k,v;
int a[maxn];
int sum[maxn*4];
void build(int p,int l,int r){
	if(l==r){
		sum[p]=a[l];
		return;
	}
	int mid=l+r>>1;
	build(ls(p),l,mid);
	build(rs(p),mid+1,r);
	sum[p]=sum[ls(p)]+sum[rs(p)];
}
void update(int p,int l,int r,int k,int v){
	if(l==r){
		sum[p]=v;
		return;
	}
	int mid=l+r>>1;
	if(k<=mid)update(ls(p),l,mid,k,v);
	else update(rs(p),mid+1,r,k,v);
	sum[p]=sum[ls(p)]+sum[rs(p)];
}
int query(int p,int l,int r,int L,int R){
	if(L<=l&&r<=R)return sum[p];
	int mid=l+r>>1;
	int ans=0;
	if(L<=mid)ans+=query(ls(p),l,mid,L,R);
	if(R> mid)ans+=query(rs(p),mid+1,r,L,R);
	return ans;
}
signed main(){
	cin>>n>>m;getchar();
	for(int i=1;i<=m;i++){
		char ch=getchar();
		cin>>l>>r;getchar();
		if(ch=='x'){
			update(1,1,n,l,r);
		}
		else {
			cout<<query(1,1,n,l,r)<<"\n";
		}
	}
	return 0;
}
2021/9/13 21:25
加载中...