本地能运行,提交就编译错误
查看原帖
本地能运行,提交就编译错误
1503208
convie楼主2025/1/25 13:30

不理解,这串代码用的是树状数组来进行区间修改和区间求和,但提交就编译错误了,来个佬看一下

#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
#define MAXN 500010
#define ios ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
#define int long long
int tr1[MAXN],tr2[MAXN];
int w[MAXN],n,m;
inline lowbit(int x){
	return x&-x;
}
void add(int tre[],int x,int v){
	for(int i=x;i<=n;i+=lowbit(i))tre[i]+=v;
}
int ask(int tre[],int x){
	int ans=0;
	for(int i=x;i;i-=lowbit(i))ans+=tre[i];
	return ans;
}
int psum(int x){
	return ask(tr1,x)*(x+1)-ask(tr2,x);
}
signed main(){
	ios;
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>w[i];
		int d=w[i]-w[i-1];
		add(tr1,i,d);
		add(tr2,i,d*i);
	}
	while(m--){
		int op,x,y,k;
		cin>>op;
		if(op==1){
			cin>>x>>y>>k;
			add(tr1,x,k);
			add(tr1,y+1,-k);
			add(tr2,x,k*x);
			add(tr2,y+1,-(y+1)*x);
		}else {
			cin>>x>>y;
			cout<<psum(y)-psum(x-1)<<endl;
		}
	}
	return 0;
}
2025/1/25 13:30
加载中...