线段树维护单点修改区间和

直接上代码吧

范围n,m<=10510^5105

C是修改,Q是查询

#include
using namespace std;
#define lc (u<<1)
#define rc ((u<<1)+1)
#define mid ((l+r)>>1)
int t[400050],n,m,x,y;
inline int read(){
	char ch=getchar();
	int res=0,zgs=1;
	while(!isdigit(ch)) {if(ch=='-') zgs=-1;ch=getchar();	}
	while(isdigit(ch)) res=(res<<3)+(res<<1)+(ch^48),ch=getchar();
	return res*zgs;
}
inline void pushdown(int u,int l,int r,int k,int v)
{
	if(l==r)
	{
		if(l==k)
		t[u]+=v;
		return;
	}
	t[u]+=v;
	if(mid>=k)
	pushdown(lc,l,mid,k,v);
	if(mid=st&&r<=des)
	{
		return t[u];
	}
	if(l>des||r>c;
		if(c=='C')
		{
			x=read(),y=read();
			pushdown(1,1,n,x,y);
		}
		else if(c=='P')
		{
			x=read(),y=read();
			cout<

转载于:https://www.cnblogs.com/forever-/p/9736066.html

你可能感兴趣的:(线段树维护单点修改区间和)