玄关求条
查看原帖
玄关求条
906378
liuyuxiteng楼主2025/6/28 11:37
#include<bits/stdc++.h>
using namespace std;
int n,w,a[100005];
long long ans;
long long t[400005];
void push_up(int p)
{
	t[p]=max(t[p*2],t[p*2+1]);
}
void build(int id,int l,int r)
{
	if(l==r)
	{
		t[id]=a[l];
		return;
	}
	int mid=(l+r)/2;
	build(id*2,l,mid);
	build(id*2,mid+1,r);
	push_up(id);
}
void update(int a,int b,int id,int l,int r)
{
	if(l==r)
	{
		t[id]+=b;
		return;
	}
	int mid=(l+r)/2;
	if(a<=mid) update(a,b,id*2,l,mid);
	else update(a,b,id*2+1,mid+1,r);
	push_up(id);
}
long long query(int l,int r,int id,int pl,int pr)//l r 目标 
{
	if(l<=pl&&pr<=r) return t[id];
	int mid=(pl+pr)/2;
	ans+=query(l,mid,id*2,pl,pr);
	ans+=query(mid+1,r,id*2+1,pl,pr);
	return ans;
}
int main()
{
	scanf("%d%d",&n,&w);
	build(1,1,n);
	while(w--)
	{
		char c[10];
		int aa,b;
		scanf("%s%d%d",&c,&aa,&b);
		if(c[0]=='x')
		{
			update(aa,b,1,1,n);
		}
		else
		{
			cout<<query(aa,b,1,1,n)<<endl;
		}
	}
	return 0;
}

2025/6/28 11:37
加载中...