树状数组读入到一半不读了
  • 板块P2068 统计和
  • 楼主Along_Dog
  • 当前回复11
  • 已保存回复11
  • 发布时间2022/12/24 21:21
  • 上次更新2023/10/24 06:43:44
查看原帖
树状数组读入到一半不读了
403145
Along_Dog楼主2022/12/24 21:21

RT求调,本地读入到第一个y就卡住了,看了一遍也没return,很不解

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define lowbit(x) x&(-x)
ll n,q,a[500005];
ll c[500005];
void add(ll x,ll v){
	for(ll i=x;i<=n;i+=lowbit(i)){
		c[i]+=v;
	}
}
ll ask(ll x){
	ll res=0;
	for(ll i=x;i>=1;i-=lowbit(i)){
		res+=c[i];
	}
	return res;
}
int main(){
	cin>>n;
	cin>>q;
	//scanf("%lld%lld",&n,&q);
	for(ll i=1;i<=n;++i) a[i]=0;
	for(ll i=1;i<=n;++i) add(i,a[i]);
	while(q--){
		char op;
		ll x,y;
		scanf("%c%lld%lld",&op,&x,&y);
		if(op=='x'){
			add(x,y);
		}
		if(op=='y'){
			printf("%lld\n",ask(y)-ask(x-1));
		}
	}
	return 0;
}
2022/12/24 21:21
加载中...