• 线段树(main函数自由)


    都是一些裸线段树的模板,无主函数!

    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    #include<iostream>
    #define ll long long
    #define M 400010
    #define lson l,m,now*2
    #define rson m+1,r,now*2+1
    using namespace std;
    ll tag[M],sum[M];
    void push_up(int now)
    {
        sum[now]=sum[now*2]+sum[now*2+1];
    }
    void push_down(int now,int m)
    {
        if(tag[now])
        {
            tag[now*2]+=tag[now];
            tag[now*2+1]+=tag[now];
            sum[now*2]+=tag[now]*(m-(m/2));
            sum[now*2+1]+=tag[now]*(m/2);
            tag[now]=0;
        }
    }
    void build(int l,int r,int now)
    {
        tag[now]=0;
        if(l==r)
        {
            scanf("%lld",&sum[now]);
            return;
        }
        int m=(l+r)/2;
        build(lson);
        build(rson);
        push_up(now);
    }
    void modify(int pos,int v,int l,int r,int now)
    {
        if(l==r)
        {
            sum[now]+=v;
            return;
        }
        int m=(l+r)/2;
        if(pos<=m)modify(pos,v,lson);
        else modify(pos,v,rson);
        push_up(now);
    }
    void change(int x,int y,int v,int l,int r,int now)
    {
        if(l>=x&&r<=y)
        {
            tag[now]+=v;
            sum[now]+=(ll)v*(r-l+1);
            return;
        }
        push_down(now,r-l+1);
        int m=(l+r)/2;
        if(x<=m)change(x,y,v,lson);
        if(y>m)change(x,y,v,rson);
        push_up(now);
    }
    ll query(int x,int y,int l,int r,int now)
    {
        if(l>=x&&r<=y)return sum[now];
        push_down(now,r-l+1);
        int m=(l+r)/2;
        ll ans=0;
        if(x<=m)ans+=query(x,y,lson);
        if(y>m)ans+=query(x,y,rson);
        return ans;
    }
    ll search(int v,int l,int r,int now)
    {
        if(l==r) return sum[now];
        push_down(now,r-l+1);
        int m=(r+l)/2;
        if(v<=m) search(v,lson);
        else if(v>m) search(v,rson);
    }
  • 相关阅读:
    sql语句相关操作
    点菜系统数据库课程设计
    JDBC连接mysql编程
    JFrame画图基础和事件监听
    JFrame编程
    Java基础知识
    bzoj1047-理想的正方形(二维单调队列)
    Project Eular 233/ BZOJ 1041
    Open Train 10352
    Codeforces Round 492 (Div.1)
  • 原文地址:https://www.cnblogs.com/harden/p/5579484.html
Copyright © 2020-2023  润新知