初学线段树求助
  • 板块P2068 统计和
  • 楼主xujiahang
  • 当前回复4
  • 已保存回复4
  • 发布时间2022/10/11 16:03
  • 上次更新2023/10/27 07:53:41
查看原帖
初学线段树求助
317909
xujiahang楼主2022/10/11 16:03

如题,样例过了但是全WA

#include<bits/stdc++.h>
using namespace std;
const int N=3e7+1;

char c;
long long x,y,n,w,m,i,j,tmp;
long long a[N],t[N],res[N];

void update(int k){
	t[k]=t[k<<1]+t[k<<1|1];
}

void modify(int k,int p,int v,int l,int r){
	if(l==r && l==x)
		a[p]+=v,t[k]+=v;
	else{
		long long mid=(l+r)>>1;
		if(p<=mid) modify(k<<1,p,v,l,mid);
		else modify(k<<1|1,p,v,mid+1,r);
		update(k);
	}
	
}

long long query(int L,int R,int l,int r,int k){
	if(L<=l && R>=r) return t[k];
	int mid=(l+r)>>1,res=0;
	if(L<=mid) res+=query(L,R,l,mid,k<<1);
	if(R>mid) res+=query(L,R,mid+1,r,k<<1|1);
	return res;
}

int main(){
	cin>>n>>w;
	for(i=0;i<w;i++){
		cin>>c>>x>>y;
		if(c=='x')
			modify(1,x,y,1,n);
		else if(c=='y')
			cout<<query(x,y,1,n,1)<<endl;
	}
	return 0;
}
2022/10/11 16:03
加载中...