20分TLE求助
  • 板块P4314 CPU 监控
  • 楼主stO_kkk
  • 当前回复1
  • 已保存回复1
  • 发布时间2025/1/17 15:43
  • 上次更新2025/1/17 18:36:58
查看原帖
20分TLE求助
837693
stO_kkk楼主2025/1/17 15:43
#include<bits/stdc++.h>
#define nif -10000000000000000ll
typedef long long ll;
using namespace std;
ll n,m,a[100005];
struct aa{
	ll ad,mx;
	friend aa operator+(aa a,aa b){return{max(nif,a.ad+b.ad),max(a.mx+b.ad,b.mx)};}
	friend aa operator*(aa a,aa b){return{max(a.ad,b.ad),max(a.mx,b.mx)};}
};
struct node{
	aa hlz,lz;
	ll mx,hmx;
}d[400005];
void bd(ll p,ll l,ll r){
	d[p]={{0ll,nif},{0ll,nif},a[l],a[l]};
	if(l==r)return;
	ll mid=l+r>>1;
	bd(p<<1,l,mid);
	bd(p<<1|1,mid+1,r);
	d[p].mx=max(d[p<<1].mx,d[p<<1|1].mx);
	d[p].hmx=max(d[p<<1].hmx,d[p<<1|1].hmx);
	return;
}
void make_tag(int p,aa now,aa his) {
	d[p].hlz=d[p].hlz*(d[p].lz+his);
	d[p].lz=d[p].lz+now;
	ll res=max(d[p].mx+his.ad,his.mx);
	d[p].hmx=max(d[p].hmx,res);
	d[p].mx=max(d[p].mx+now.ad,now.mx);
}
void psd(int p) {
	make_tag(p<<1,d[p].lz,d[p].hlz);
	make_tag(p<<1|1,d[p].lz,d[p].hlz);
	d[p].lz=d[p].hlz={0ll,nif};
}
void upd(int p,int L,int R,int l,int r,ll v,ll mx) {
	if(L<=l&&r<=R){make_tag(p,{v,mx},{v,mx});return;}
	int mid=(l+r)>>1;
	psd(p);
	if(L<=mid)upd(p<<1,L,R,l,mid,v,mx);
	if(R>mid)upd(p<<1|1,L,R,mid+1,r,v,mx);
	d[p].mx=max(d[p<<1].mx,d[p<<1|1].mx);
	d[p].hmx=max(d[p<<1].hmx,d[p<<1|1].hmx);
}
ll ask(ll p,ll l,ll r,ll s,ll t,ll v){
	if(s==t){
		if(v==4)return d[p].mx;
		return d[p].hmx;
	}else{
		ll mid=s+t>>1;
		psd(p);
		if(r<=mid)return ask(p<<1,l,r,s,mid,v);
		if(l>mid)return ask(p<<1|1,l,r,mid+1,t,v);
		return max(ask(p<<1,l,mid,s,mid,v),ask(p<<1|1,mid+1,r,mid+1,t,v));
	}
}
int main(){
	ios::sync_with_stdio(0);
	cin.tie(nullptr);
	cout.tie(nullptr);
	cin>>n;
	for(int i=1;i<=n;i++)cin>>a[i];
	cin>>m;
	bd(1,1,n);
	while(m--){
		char p;
		ll l,r,v;
		cin>>p>>l>>r;
		if(p=='Q')cout<<ask(1,l,r,1,n,4)<<'\n';
		else if(p=='A')cout<<ask(1,l,r,1,n,1)<<'\n';
		else if(p=='P'){
			cin>>v;
			upd(1,l,r,1,n,v,nif);
		}else{
			cin>>v;
			upd(1,l,r,1,n,nif,v);
		}
	}
	return 0;
}

只有1、2A了,其他都T

2025/1/17 15:43
加载中...