阳历过了,0pts
查看原帖
阳历过了,0pts
795344
crz_qwq楼主2025/2/5 11:48
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=5e5+5,inf=0x3f3f3f3f3f3f3f3f;
int a[N],b[N];
struct node{
    int sum,ij,jk,mx,mi;
}tr[N<<2];
node pushup(node ls,node rs)
{
    node res;
    res.sum=max({ls.sum,rs.sum,ls.ij+rs.mx,ls.mx+rs.jk});
    res.mi=min(ls.mi,rs.mi);
    res.mx=max(ls.mx,rs.mx);
    res.ij=max(ls.ij,ls.mx-rs.mi);
    res.jk=max(rs.jk,rs.mx-ls.mi);
    return res;
}
void build(int p,int pl,int pr)
{
    if(pl==pr)
    {
        tr[p].mx=a[pl];
        tr[p].mi=b[pl];
        tr[p].sum=-inf;
        tr[p].ij=tr[p].jk=-inf;
        return ;
    }
    int mid=(pl+pr)>>1;
    build(p<<1,pl,mid);
    build(p<<1|1,mid+1,pr);
    tr[p]=pushup(tr[p<<1],tr[p<<1|1]);
}
void updateA(int p,int pl,int pr,int x,int d)
{
    if(pl==pr)
    {
        tr[p].mx=d;
        return ;
    }
    int mid=(pl+pr)>>1;
    if(x<=mid)
        updateA(p<<1,pl,mid,x,d);
    else
        updateA(p<<1|1,mid+1,pr,x,d);
    tr[p]=pushup(tr[p<<1],tr[p<<1|1]);
}
void updateB(int p,int pl,int pr,int x,int d)
{
    if(pl==pr)
    {
        tr[p].mi=d;
        return ;
    }
    int mid=(pl+pr)>>1;
    if(x<=mid)
        updateB(p<<1,pl,mid,x,d);
    else
        updateB(p<<1|1,mid+1,pr,x,d);
    tr[p]=pushup(tr[p<<1],tr[p<<1|1]);
}
node query(int p,int pl,int pr,int L,int R)
{
    if(L<=pl&&pr<=R)
        return tr[p];
    int mid=(pl+pr)>>1;
    if(R<=mid)
        return query(p<<1,pl,mid,L,R);
    if(L>mid)
        return query(p<<1|1,mid+1,pr,L,R);
    return pushup(query(p<<1,pl,mid,L,R),query(p<<1|1,mid+1,pr,L,R));
}
signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    int n,m;
    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,1,n);
    while(m--)
    {
        int op,l,r;
        cin>>op>>l>>r;
        if(op==1)
            updateA(1,1,n,l,r);
        else if(op==2)
            updateB(1,1,n,l,r);
        else
            cout<<query(1,1,n,l,r).sum<<'\n';
    }

}
2025/2/5 11:48
加载中...