阅读背景:

算法笔记--笛卡尔树模板

来源:互联网 

详见:oi-wi
模板:

const int N = 3e6 + 10;
struct Node {
    int id, val, par, ch[2], sz;
    inline bool operator < (Node & rhs) {return id < rhs.id;}
    inline void init(int _id, int _val, int _par) {
        id = _id, val = _val, par = _par, ch[0] = ch[1] = 0, sz = 1;
    }
}tree[N];
inline int cartesian_build(int n) {
    for (int i = 1; i <= n; ++i) {
        int k = i-1;
        while(tree[k].val > tree[i].val) k = tree[k].par;
        tree[i].ch[0] = tree[k].ch[1];
        tree[tree[i].ch[0]].par = i;
        tree[k].ch[1] = i;
        tree[i].par = k;
    }
    return tree[0].ch[1];
}const int N = 3e6 + 10;
struct N



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: