直奔主题:求调

P3372 【模板】线段树 1

AT_Feild @ 2024-11-19 18:51:01

#include<bits/stdc++.h>
#define N 10005
#define int long long 
using namespace std;
struct node{
    int l,r,sum,tg=0;
}seg[4*N];
int n,m;
int in[N];
void push_down(int p){
    seg[2*p].tg+=seg[p].tg;
    seg[2*p+1].tg+=seg[p].tg;
    seg[2*p].sum+=(seg[2*p].r-seg[2*p].l+1)*seg[2*p].tg;
    seg[2*p+1].sum+=(seg[2*p+1].r-seg[2*p+1].l+1)*seg[2*p+1].tg;
    seg[p].tg=0;
}
void push_up(int p){
    seg[p].sum=seg[2*p].sum+seg[2*p+1].sum;
}
void building(int p,int l,int r){
    seg[p].l=l;
    seg[p].r=r;
    if(l==r){
        seg[p].sum=in[l];
        return;
    }
    int mid=(l+r)/2;
    building(2*p,l,mid);
    building(2*p+1,mid+1,r);
    push_up(p);

}
void insert(int p,int l,int r,int k){
    if(l>seg[p].r or seg[p].l>r)return ;
    if(r>=seg[p].r and seg[p].l>=l){
        seg[p].tg+=k;
        seg[p].sum+=(seg[p].r-seg[p].l+1)*k;
        return;
    }
    push_down(p);
    insert(2*p,l,r,k);
    insert(2*p+1,l,r,k);
    push_up(p);
}
int qurey(int p,int l,int r){
    if(l>seg[p].r or seg[p].l>r)return 0;
    if(r>=seg[p].r and seg[p].l>=l){
        return seg[p].sum;
    }
    push_down(p);
    return qurey(2*p,l,r)+qurey(2*p+1,l,r);

}
signed main() {
/*
5 5
1 5 4 2 3
2 2 4
1 2 3 2
2 3 4
1 1 5 1
2 1 4
*/  
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        cin>>in[i];
    }
    building(1,1,n);
//  for(int i=1;i<4*n;i++){
//      cout<<"l->r:  "<<seg[i].l<<" -> "<<seg[i].r<<"  sum:"<<seg[i].sum<<endl;
//  }
    for(int i=1;i<=m;i++){
        int leixin,x,y,k;
        cin>>leixin;
        cin>>x>>y;
        if(leixin==1){
            cin>>k;
            insert(1,x,y,k);
            for(int i=1;i<4*n;i++){
                cout<<"l->r:  "<<seg[i].l<<" -> "<<seg[i].r<<"  sum:"<<seg[i].sum<<endl;
            }
            cout<<endl;
        }
        else{
//          cout<<qurey(1,x,y)<<endl;

            for(int i=1;i<4*n;i++){
                cout<<"l->r:  "<<seg[i].l<<" -> "<<seg[i].r<<"  sum:"<<seg[i].sum<<endl;
            }
            cout<<endl;
        }

    }
    return 0;
}

by yuanshen362 @ 2024-11-19 18:51:47

@AT_Feild

你咋还在写这玩意?

快去写可持久化,别搁这儿水了,我知道你会


by yuanshen362 @ 2024-11-19 18:52:07

你还能不会吗


by __My0217__ @ 2024-11-19 18:52:26

《为什么你的 N 只有 10^4


by __My0218__ @ 2024-11-19 18:55:05

L


by __My0217__ @ 2024-11-19 18:55:46

《为什么你的 pushdown 里面要用len乘儿子的tg》


by yuanshen362 @ 2024-11-19 18:55:47

@AT_Feild 芒才眉山主食。

然而山了海事撮的。


by __My0217__ @ 2024-11-19 18:58:18

@ZhangZhiyang


by yuanshen362 @ 2024-11-19 18:58:44

@AT_FeildI see.

你好像写了线段等差三角形史山


by __My0218__ @ 2024-11-19 18:58:46

直奔主题:fw zzy


|