模板+样例都对了,但全WA
  • 板块P2068 统计和
  • 楼主WsW_花逝爆零人
  • 当前回复1
  • 已保存回复1
  • 发布时间2020/12/21 15:43
  • 上次更新2023/11/5 05:50:25
查看原帖
模板+样例都对了,但全WA
349824
WsW_花逝爆零人楼主2020/12/21 15:43
#include<bits/stdc++.h>
using namespace std;
struct node{
	int r,l;
	int sum;
};
node tree[2000000];
int m,n,a,b,k[500003];
char x;
int rson(int f){
	return f*2+1;
}
int lson(int f){
	return f*2;
}
void pushup(int id){
	tree[id].sum=tree[rson(id)].sum+tree[lson(id)].sum;
}
void build(int id,int l,int r){
	tree[id].r=r;
	tree[id].l=l;
	tree[id].sum=0;
	if(l==r){
		tree[id].sum=k[l];
		return ;
	}
	int m=(l+r)/2;
	build(lson(id),l,m);
	build(rson(id),m+1,r);
	pushup(id);
}
void update(int x,int add,int id){
	if(tree[id].l==tree[id].r){
		tree[id].sum+=add;
		return ;
	}
	int m=(tree[id].l+tree[id].r)/2;
	if(x<=m)update(x,add,lson(id));
	else update(x,add,rson(id));
	pushup(id);
}
int query(int l,int r,int id){
	if(l<=tree[id].l&&tree[id].r<=r)return tree[id].sum;
	int ans=0;
	int m=(tree[id].l+tree[id].r)/2;
	if(l<=m)ans+=query(l,r,lson(id));
	if(m<r)ans+=query(l,r,rson(id));
	return ans;
}
int main(){
	scanf("%d%d",&n,&m);
//	for(int i=1;i<=n;i++)scanf("%d",&k[i]);
	build(1,1,n);
	while(m--){
		cin>>x;
		scanf("%d%d",&a,&b);
		if(x=='y')printf("%d\n",query(a,b,1));
		else update(a,b,1);
	}
	return 0;
}
2020/12/21 15:43
加载中...