zoukankan      html  css  js  c++  java
  • 线段树

    线段树

    模板

    struct SegTree {
        #define lson l,mid,rt<<1
        #define rson mid+1,r,rt<<1|1
        ll a[maxn << 2];
        int tag[maxn << 2];
        void pushup(int rt) {
            a[rt] = min(a[rt << 1], a[rt << 1 | 1]);
        }
        void push(int rt,int x) {
            a[rt] += x;
            tag[rt] += x;
        }
        void pushdown(int rt) {
            if(!tag[rt])
                return;
            push(rt << 1, tag[rt]);
            push(rt << 1 | 1, tag[rt]);
            tag[rt] = 0;
        }
        void build(int l = 1,int r = n,int rt = 1) {
            if(l==r) {
                a[rt] = 0;
                return;
            }
            int mid = (l + r) >> 1;
            build(lson), build(rson);
            pushup(rt);
        }
        void update(int L, int R, int x, int l = 1, int r = n,int rt = 1) {
            if(L<=l&&r<=R) {
                push(rt, x);
                return;
            }
            int mid = (l + r) >> 1;
            pushdown(rt);
            if(L<=m)
                update(L, R, x, lson);
            if(R>m)
                update(L, R, x, rson);
            pushup(rt);
        }
        ll query(int L, int R, int l = 1, int r = n,int rt = 1) {
            if(L<=l&&r<=R) {
                return a[rt];
            }
            int m = (l + r) >> 1;
            pushdown(rt);
            if(R<=m)
                return query(L, R, lson);
            if(L>m)
                return query(L, R, rson);
            return min(query(L, R, lson), query(L, R, rson));
        }
    } f;
    
  • 相关阅读:
    聚美优品面试题
    前端开发常用的网站
    JS 正则表达式大全
    软件工程作业二
    大三个人简述
    2019期末总结
    2019春第一次课程设计实验报告
    2019第十二周作业
    2019第十一周作业
    2019第十周作业
  • 原文地址:https://www.cnblogs.com/guaguastandup/p/12585283.html
Copyright © 2011-2022 走看看