社区讨论

0分求条,油条闭关

P2068统计和参与者 2已保存回复 3

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
3 条
当前快照
1 份
快照标识符
@mmizt1ni
此快照首次捕获于
2026/03/09 17:42
23 小时前
此快照最后确认于
2026/03/09 22:16
18 小时前
查看原帖
代码如下 WA 0pts```cpp
CPP
#include<bits/stdc++.h>

using namespace std;

const int N=5e5+10;
int n,m;

struct Node{
	int sum,l,r;
}tr[4*N];

int num[N];

void push_up(int x){
	tr[x].sum=tr[x*2].sum+tr[x*2+1].sum;
}

void build(int x,int l,int r){
	tr[x].l=l; 
	tr[x].r=r;
	if(l==r){
		tr[x].sum=num[l];
		return ;
	}
	int mid=(l+r)/2;
	build(2*x,l,mid);
	build(2*x+1,mid+1,r);
	push_up(x);
}

int query(int x,int l,int r){
	if(tr[x].l>=l&&tr[x].r<=r) return tr[x].sum;
	
	int mid=(tr[x].l+tr[x].r)/2;
	
	int sum=0;
	if(l<=mid) sum+=query(2*x,l,r);
	if(r>mid) sum+=query(2*x+1,l,r);
	
	return sum;
}

void change(int x,int p,int k){
	if(tr[x].l==tr[x].r){
		tr[x].sum+=k;
		return ;
	}
	int mid=(tr[x].l+tr[x].r)/2;
	if(p<=mid)change(2*x,p,k);
	else change(2*x+1,p,k);
	push_up(x);
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>num[i];
	}
	build(1,1,n);
	while(m--){
		int k,b,c;
		cin>>k>>b>>c;
		if(k==1)change(1,b,c);
		else cout<<query(1,b,c)<<"\n";
	}
	return 0;
}

回复

3 条回复,欢迎继续交流。

正在加载回复...