萌新悬关求调连样例都过不去的线段树板子qwq

P3372 【模板】线段树 1

fish_love_cat @ 2023-07-13 10:33:15

明明照着书打的,但是全RE/kk

#include<bits/stdc++.h>
using namespace std;
#define ll long long

const int maxn=1e5+10;
ll n,m,a[maxn],w[maxn<<2],lazy[maxn<<2];//w=区间和

void pushup(int u){
    w[u]=w[u<<1]+w[(u<<1)+1];
}

void build(int u,int l,int r){
    if(l==r){
        w[u]=a[l];
    }else{
        int mid=(l+r)>>1;
        build(u<<1,l,mid);
        build((u<<1)+1,mid+1,r);
        pushup(u);
    }
}

ll query0(int u,int l,int r,int x){
    if(l==r) return w[u];
    int mid=(l+r)>>1;
    if(mid>=x) return query0(u<<1,l,mid,x);
    return query0((u<<1)+1,1+mid,r,x);
}

void update0(int u,int l,int r,int p,ll x){
    if(l==r){
        w[u]=x;
        return;
    }
    int mid=(l+r)>>1;
    if(mid>=p) update0(u<<1,l,mid,p,x);
    else update0(1+(u<<1),mid+1,r,p,x);
    pushup(u);
}

bool inrg(int l,int r,int l2,int r2){
    return (l2<=l)&&(r<=r2);
}

bool outrg(int l,int r,int l2,int r2){
    return (l>r2)||(r<l2);
}

void mktag(int u,int l,ll x){
    lazy[u]+=x;
    w[u]+=l*x;
}

void pushdown(int u,int l,int r){
    int mid=(l+r)>>1;
    mktag(u<<1,mid-l+1,lazy[u]);
    mktag((u<<1)+1,r-mid,lazy[u]);
    lazy[u]=0;
}

ll query(int u,int l,int r,int l2,int r2){
    if(inrg(l,r,l2,r2)) return w[u];
    if(!outrg(l,r,l2,r2)){
        int mid=(l+r)>>1;
        pushdown(u,l,r);
        return query(u<<1,l,mid,l2,r2)+query((u<<1)+1,mid+1,r,l2,r2);
    }
    return 0;
}

void update(int u,int l,int r,int l2,int r2,ll x){
    if(inrg(l,r,l2,r2)) mktag(u,r-l+1,x);
    if(!outrg(l,r,l2,r2)){
        int mid=(l+r)>>1;
        pushdown(u,l,r);
        update(u<<1,l,mid,l2,r2,x);update((u<<1)+1,mid+1,r,l2,r2,x);
        pushup(u);
    }
}

signed main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    build(1,1,n);
    for(int i=1;i<=m;i++){
        int op,x,y,k;
        cin>>op>>x>>y;
        if(op==1) cin>>k,update(1,1,n,x,y,k);
        else cout<<query(1,1,n,x,y)<<endl;
    }
    return 0;
}

实在查不出来……


by Hua_Liang @ 2023-07-13 14:18:32

@fish_love_cat 本蒟蒻就问一句,被脏了是什么意思?@fish_love_cat


by fish_love_cat @ 2023-07-13 14:24:10

@Hua_Liang 有人公开赛搬题,他是团长,连坐惩罚和 ran 喵一起寄了


by fish_love_cat @ 2023-07-13 14:24:58

@Stitch0711 嗯,nsdd,我这就去逝世()


by Hua_Liang @ 2023-07-13 14:31:54

为大佬叹息中


上一页 |