0
点赞
收藏
分享

微信扫一扫

珂朵莉树板子

诗远 2022-02-15 阅读 44

珂朵莉是世界上最幸福的女孩!!!

在这里插入图片描述

JUST存个板子,方便以后用

记得处理好set::iterator == set::begin()/end()的情况!

namespace ct{
    struct node{
        int l, r;
        mutable int val;
        node (int lpos): l(lpos) {}
        node (int lpos, int rpos, int vall): l(lpos), r(rpos), val(vall) {}
        bool operator< (const node &a) const { return l < a.l; }
    };

    set<node> s;
    using sit = set<node>::iterator;

    //^ChthollyTree-SetSplit
    sit split(int pos){
        sit it = s.lower_bound(node(pos));
        if(it != s.end() && it -> l == pos) return it;
        --it;
        int l = it -> l, r = it -> r, val = it -> val;
        s.erase(it);
        if(l <= pos - 1) s.insert(node(l, pos - 1, val));
        if(r >= pos) return s.insert(node(pos, r, val)).first;
        return s.end();
    }

    //^ChthollyTree-PartValueAssign
    void assign(int l, int r, int val){
        sit itr = split(r + 1), itl = split(l);
        s.erase(itl, itr);
        s.insert(node(l, r, val));
    }

    //^ChthollyTree-PartValueAddition
    void add(int l, int r, int val){
        sit itr = split(r + 1), itl = split(l);
        while(itl != itr) itl -> val += val, itl++;
    }

    //^ChthollyTree-Get_K-th_Value
    int kth(int l, int r, int k){
        sit itr = split(r + 1), itl = split(l);
        vector<pair<int, int>> v;
        v.clear();
        for(sit it = itl; it != itr; it++) v.emplace_back(make_pair(it -> val, it -> r - it -> l + 1));
        sort(v.begin(), v.end());
        for(int i = 0; i < v.size(); i++){
            k -= v[i].second;
            if(k <= 0) return v[i].first;
        }
        return -1;
    }

    //^ChthollyTree-SinglePointQuery
    sit query(int pos){
        auto it = prev(s.upper_bound(pos));
        return it;
    }

    //^ChthollyTree-PartQuery
    int query_part(int l, int r, int x, int y){
        sit itr = split(r + 1), itl = split(l);
        int res(0);
        for(sit it = itl; it != itr; it++) res += it -> val;
        return res;
    }
}

举报

相关推荐

0 条评论