求助树状数组模版
  • 板块学术版
  • 楼主_Lyk_def
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/9/25 13:29
  • 上次更新2023/11/2 18:11:32
查看原帖
求助树状数组模版
769863
_Lyk_def楼主2023/9/25 13:29

单点修改区间查询的模版,但在loj有一个点过不了

这是loj的记录

#include<bits/stdc++.h>
#define lowbit(x) ((x)&(-x))
using namespace std;
const int Maxn=1e6;
long long read(){
	long long ans=0,c=1; char p=getchar();
	while(!isdigit(p)) { if(p=='-') c=-1; p=getchar(); }
	while( isdigit(p)) { ans=(ans<<3)+(ans<<1)+p-'0'; p=getchar(); }
	return ans*c;
}
int n,q; long long tree[Maxn];
void update(int x,long long k){
	while(x<=n) tree[x]+=k, x+=lowbit(x);
}
long long query(int x){
	long long res=0;
	while(x>0) res+=tree[x], x-=lowbit(x);
	return res;
}
int opt,l; long long r;
int main(){
	n=read(); q=read();
	for(int i=1;i<=n;i++) {
		r=read(); 
		update(i,r);
	}
	while(q--){
		opt=read(); l=read(); r=read();
		if(opt==1) update(l,r);
		if(opt==2) printf("%lld\n",query(r)-query(l-1));
	}
	return 0;
}

help!

2023/9/25 13:29
加载中...