WA Sub#1~6 9
查看原帖
WA Sub#1~6 9
926886
kind_Ygg楼主2024/12/10 13:17
#include<bits/stdc++.h>
#define int long long 
using namespace std;
const int N=5e5+5;
int n,m;
int a[N],b[N];
struct Tree
{
	int A,B;
	int l,r;
	int maxn;
}tree[N<<2];
int op,x,y;
int ls(int x){return x<<1;}
int rs(int x){return x<<1|1;}
void push_up(int p)
{
	tree[p].A=max(tree[ls(p)].A,tree[rs(p)].A);
	tree[p].B=min(tree[ls(p)].B,tree[rs(p)].B);
	tree[p].l=max(tree[ls(p)].l,max(tree[rs(p)].l,tree[ls(p)].A-tree[rs(p)].B));
	tree[p].r=max(tree[ls(p)].r,max(tree[rs(p)].r,tree[rs(p)].A-tree[ls(p)].B));
	tree[p].maxn=max(max(tree[ls(p)].maxn,tree[rs(p)].maxn),max(tree[ls(p)].l+tree[rs(p)].A,tree[rs(p)].r+tree[ls(p)].A));
}
void build(int s,int t,int p)
{
	if(s==t)
	{
		tree[p].A=a[s];
		tree[p].B=b[s];
		tree[p].maxn=tree[p].l=tree[p].r=LLONG_MIN;
		return;
	}
	int mid=s+(t-s>>1);
	build(s,mid,ls(p));
	build(mid+1,t,rs(p));
	push_up(p);
}
void update1(int l,int k,int s,int t,int p)
{
	if(s==t)
	{
		tree[p].A=k;
		return;
	}
	int mid=s+(t-s>>1);
	if(l<=mid) update1(l,k,s,mid,ls(p));
	else update1(l,k,mid+1,t,rs(p));
	push_up(p);
}
void update2(int l,int k,int s,int t,int p)
{
	if(s==t)
	{
		tree[p].B=k;
		return;
	}
	int mid=s+(t-s>>1);
	if(l<=mid) update2(l,k,s,mid,ls(p));
	else update2(l,k,mid+1,t,rs(p));
	push_up(p);
}
Tree query(int l,int r,int s,int t,int p)
{
	if(l<=s and t<=r) return tree[p];
	int mid=s+(t-s>>1);
	Tree trl={0,0,0,0,0},trr={0,0,0,0,0},ans;
	trl.B=trr.B=LLONG_MAX;
	if(l<=mid)
		trl=query(l,r,s,mid,ls(p));
	if(mid+1<=r)
		trr=query(l,r,mid+1,t,rs(p));
	ans.A=max(trl.A,trr.A);
	ans.B=min(trl.B,trr.B);
	ans.l=max(trl.l,max(trr.l,trl.A-trr.B));
	ans.r=max(trl.r,max(trr.r,trr.A-trl.B));
	ans.maxn=max(max(trl.maxn,trr.maxn),max(trl.l+trr.A,trr.r+trl.A));
	return ans;
}
signed main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++) cin>>a[i];
	for(int i=1;i<=n;i++) cin>>b[i];
	build(1,n,1);
	while(m--)
	{
		cin>>op>>x>>y;
		if(op==1) update1(x,y,1,n,1);
		else if(op==2) update2(x,y,1,n,1);
		else cout<<query(x,y,1,n,1).maxn<<'\n';
	}
	return 0;
}
2024/12/10 13:17
加载中...