全WA了,求助
查看原帖
全WA了,求助
116011
sanye楼主2024/5/26 18:33
#include<bits/stdc++.h>
using namespace std;
long long n,m,a,b,c,d,mod;
long long shu[100010],lazy[400020],cc[400010],ans[400020];  
inline int ls(int x){
	return x<<1;
}
inline int rs(int x){
	return (x<<1)|1;
}
void push_up(int x){
	ans[x]=(ans[ls(x)]+ans[rs(x)])%mod;
}
void build(int p,int l,int r){
	cc[p]=1;
	if(l==r){
		ans[p]=shu[l]%mod;
		return;
	}
	int mid=(l+r)>>1;
	build(ls(p),l,mid);
	build(rs(p),mid+1,r);
	push_up(p);	
}
void push_down(int p,int l,int r){
	int mid=(l+r)>>1;
	ans[ls(p)]=((ans[ls(p)]*cc[p])+((mid-l+1)*lazy[p]))%mod;
	ans[rs(p)]=((ans[rs(p)]*cc[p])+((r-mid)*lazy[p]))%mod;
	cc[ls(p)]=(cc[ls(p)]*cc[p])%mod;
	cc[rs(p)]=(cc[rs(p)]*cc[p])%mod;
	lazy[ls(p)]=((lazy[ls(p)]*cc[p])+lazy[p])%mod;
	lazy[rs(p)]=((lazy[rs(p)]*cc[p])+lazy[p])%mod;
	lazy[p]=0;
	cc[p]=1;
}
void jia(int p,int l,int r,int x,int y,int z){
	if(x<=l&&y>=r){
		ans[p]+=(r-l+1)*z;
		ans[p]%=mod;
		lazy[p]+=z;
		lazy[p]%=mod;
		return;
	}
		push_down(p,l,r);
		int mid=(l+r)>>1;
		if(x<=mid) {
			jia(ls(p),l,mid,x,y,z);
		}
		if(y>mid){
			jia(rs(p),mid+1,r,x,y,z);
		}
		push_up(p);
}
void cheng(int p,int l,int r,int x,int y,int z){
	if(x<=l&&y>=r){
		ans[p]*=z;
		ans[p]%=mod;
		lazy[p]*=z;
		lazy[p]%=mod;
		cc[p]*=z;
		cc[p]%=mod;
		return;
	}
		push_down(p,l,r);
		int mid=(l+r)>>1;
		if(x<=mid) {
			jia(ls(p),l,mid,x,y,z);
		}
		if(y>mid){
			jia(rs(p),mid+1,r,x,y,z);
		}
		push_up(p);
}
long long cha(int p,int l,int r,int x,int y){
	if(x<=l&&y>=r){
		return ans[p];
	}
		push_down(p,l,r);
		int mid=(l+r)>>1;
		long long anss=0;
		if(x<=mid){
			anss+=cha(ls(p),l,mid,x,y)%mod;
		}
		if(y>mid){
			anss+=cha(rs(p),mid+1,r,x,y)%mod;
		}
		return anss%mod;
}
int main(){
	cin>>n>>m>>mod;
	for(int i=1;i<=n;i++) scanf("%lld",&shu[i]);
	build(1,1,n);
	for(int i=1;i<=m;i++){
		scanf("%lld",&a);
		if(a==1){
			scanf("%lld%lld%lld",&b,&c,&d);
			cheng(1,1,n,b,c,d);
		}
		if(a==2){
			scanf("%lld%lld%lld",&b,&c,&d);
			jia(1,1,n,b,c,d);
		}
		if(a==3){
			scanf("%lld%lld",&b,&c);
			cout<<cha(1,1,n,b,c)<<endl;
		}
	}
}
2024/5/26 18:33
加载中...