60分求调
查看原帖
60分求调
625235
dengleming楼主2025/1/24 14:31
#include<bits/stdc++.h>
using namespace std;
long long FU=-1e18,xx,yy,kk,m,okc[10000005],n,a[1000005],s[10000005],biao,lazy[10000005],lczy[10000005];
void buildtree(long long pos,long long lt,long long rt){
	if(lt==rt){
		s[pos]=a[lt];
		return;
	}
	long long mid=(lt+rt)/2;
	buildtree(pos*2,lt,mid);
	buildtree(pos*2+1,mid+1,rt);
	s[pos]=max(s[pos*2],s[pos*2+1]);
}
void push_down(long long pos){
	if(okc[pos]){
		lczy[pos*2]=lczy[pos*2+1]=lczy[pos];
		s[pos*2]=s[pos*2+1]=lczy[pos];
		okc[pos]=0;
	}
	if(lazy[pos]){
		lazy[pos*2]+=lazy[pos];
		lazy[pos*2+1]+=lazy[pos];
		s[pos*2]+=lazy[pos];
		s[pos*2+1]+=lazy[pos];
		lazy[pos]=0;
	}
}
void cdd(long long xx,long long yy,long long kk,long long pos,long long lt,long long rt){
	if(xx<=lt and rt<=yy){
		s[pos]=kk;
		lczy[pos]=kk;
		okc[pos]=1;
		return;
	}
	push_down(pos);
	if(lt==rt)return;
	long long mid=(lt+rt)/2;
	if(xx<=mid)cdd(xx,yy,kk,pos*2,lt,mid);
	if(yy>mid)cdd(xx,yy,kk,pos*2+1,mid+1,rt);
	s[pos]=max(s[pos*2],s[pos*2+1]);
}
void add(long long xx,long long yy,long long kk,long long pos,long long lt,long long rt){
	if(xx<=lt and rt<=yy){
		s[pos]+=kk;
		lazy[pos]+=kk;
		return;
	}
	push_down(pos);
	if(lt==rt)return;
	long long mid=(lt+rt)/2;
	if(xx<=mid)add(xx,yy,kk,pos*2,lt,mid);
	if(yy>mid)add(xx,yy,kk,pos*2+1,mid+1,rt);
	s[pos]=max(s[pos*2],s[pos*2+1]);
}
long long qiu(long long xx,long long yy,long long pos,long long lt,long long rt){
	if(xx<=lt and rt<=yy){
		return s[pos];
	}
	push_down(pos);
	long long mid=(lt+rt)/2,sum=FU;
	if(xx<=mid)sum=max(sum,qiu(xx,yy,pos*2,lt,mid));
	if(yy>mid)sum=max(sum,qiu(xx,yy,pos*2+1,mid+1,rt));
	return sum;
}
int main(){
	scanf("%lld%lld",&n,&m);
	for(long long i=1;i<=n;i++)scanf("%lld",&a[i]);
	buildtree(1,1,n);
	for(long long i=1;i<=m;i++){
		scanf("%lld%lld%lld",&biao,&xx,&yy);
		if(biao==1){;
			scanf("%lld",&kk);
			cdd(xx,yy,kk,1,1,n);
		}else if(biao==2){
			scanf("%lld",&kk);
			add(xx,yy,kk,1,1,n);
		}else{
			printf("%lld\n",qiu(xx,yy,1,1,n));
		}
	}
	return 0;
}
2025/1/24 14:31
加载中...