顾名思义

就是两颗线段树合成一个线段树
那合成的线段树是适合所有线段树吗
当然不是,是动态开点线段树

建树

这里建n个节点的时候,每个节点建一棵树
而且要按照一定的形态建立一条链
就是说如果最终形态是有n个数字的树,
那你初始化的那一条链子一定是这颗树上扣下来的
这样才方便合并

merge操作

最重要的操作
流程:
如果x和y有一颗树为空,直接返回
否则,他们上面肯定形态相同(建树你干了什么?)
那就留下一个x好了
处理一下size[x]什么的芭芭拉拉
然后右儿子,左儿子一同递归下去

int Merge(int x,int y)
{
    if(!x||!y)  return y;
    size[x]+=size[y];
    lc[x]=Merge(lc[x],lc[y]);
    rc[x]=Merge(rc[x],rc[y]);
    return x;
}

其他操作

类似于主席树,自己瞎yy就好