本地无法运行
  • 板块学术版
  • 楼主AeeE5x
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/12/7 02:06
  • 上次更新2024/12/7 11:16:40
查看原帖
本地无法运行
708516
AeeE5x楼主2024/12/7 02:06

写了个线段树板子,洛谷IDE可以正常运行,交上去也能AC,但本地就是运行不了,求助一下问题出在哪了

#include<bits/stdc++.h>
#define ll long long
#define lowbit(x) (x&(-x))
#define mem(a,b) memset(a,b,sizeof a)
#define rev(x) reverse(x.begin(),x.end())
using namespace std;
const int MAX_SIZE=100010;
struct SegmentTree{
	struct{int l,r;long long sum,lz_add;}t[MAX_SIZE*4];
	
	void build(int l,int r,long long a[],int p=1){
		t[p].l=l;
		t[p].r=r;
		t[p].lz_add=0ll;
		if(l==r) t[p].sum=a[l];
		else{
			int mid=(l+r)>>1;
			build(l,mid,a,p<<1);
			build(mid+1,r,a,p<<1|1);
			t[p].sum=t[p<<1].sum+t[p<<1|1].sum;
		}
	}
	
	void pushdown(int p){
		t[p<<1].sum+=(t[p<<1].r-t[p<<1].l+1)*t[p].lz_add;
		t[p<<1].lz_add+=t[p].lz_add;
		t[p<<1|1].sum+=(t[p<<1|1].r-t[p<<1|1].l+1)*t[p].lz_add;
		t[p<<1|1].lz_add+=t[p].lz_add;
		t[p].lz_add=0ll;
	}
	
	void change(int l,int r,long long val,int p=1){
		if(l<=t[p].l&&t[p].r<=r){
			t[p].sum+=(t[p].r-t[p].l+1)*val;
			t[p].lz_add+=val;
		}else{
			pushdown(p);
			int mid=(t[p].l+t[p].r)>>1;
			if(l<=mid) change(l,r,val,p<<1);
			if(r>mid) change(l,r,val,p<<1|1);
			t[p].sum=t[p<<1].sum+t[p<<1|1].sum;
		}
	}
	
	long long query(int l,int r,int p=1){
		if(l<=t[p].l&&t[p].r<=r) return t[p].sum;
		pushdown(p);
		unsigned int mid=(t[p].l+t[p].r)>>1;
		long long res=0;
		if(l<=mid) res+=query(l,r,p<<1);
		if(r>mid) res+=query(l,r,p<<1|1);
		return res;
	}
};
int n,m;
ll lis[100010];
int main(){
//	ios::sync_with_stdio(false);
//	cin.tie(0),cout.tie(0);
	
	cin>>n>>m;
	for(int i=1;i<=n;i++) cin>>lis[i];
	SegmentTree a;
	a.build(1,n,lis);
	while(m--){
		int op;cin>>op;
		if(op==1){
			ll x,y,k;cin>>x>>y>>k;
			a.change(x,y,k);
		}else{
			ll x,y;cin>>x>>y;
			cout<<a.query(x,y)<<endl;
		}
	}
	
	
	
	return 0;
}
2024/12/7 02:06
加载中...