大雾
  • 板块学术版
  • 楼主innocence_lyf
  • 当前回复14
  • 已保存回复14
  • 发布时间2020/12/2 22:49
  • 上次更新2023/11/5 06:50:33
查看原帖
大雾
380677
innocence_lyf楼主2020/12/2 22:49
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<queue>
#define N 100005
using namespace std;
int a[N<<1];
int n,m;
int lowbit(int x){
	return x&(-x);
}
void add(int x,int k){
	while(x<=n){
		a[x]+=k;
		x+=lowbit(x);
	}
}
int sum(int x){
	int ans=0;
	while(x!=0){
		ans+=a[x];
		x-=lowbit(x);
	}
	return ans;
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=m;i++){
		char op;
		int a,b;
		cin>>op>>a>>b;
		if(op=='x')
			add(a,b);
		else
			cout<<sum(b)-sum(a-1)<<endl;
	}
	return 0;
}

p2068

看看哪出错了(树状数组)

2020/12/2 22:49
加载中...