关于FHQ Treap
  • 板块学术版
  • 楼主KohaD_SEGA
  • 当前回复5
  • 已保存回复6
  • 发布时间2023/12/19 23:57
  • 上次更新2023/12/20 14:30:49
查看原帖
关于FHQ Treap
1085667
KohaD_SEGA楼主2023/12/19 23:57

这是 FHQ\tt FHQ 的 split\rm split 操作:

void update(int u)
{
    tree[u].size=tree[tree[u].l].size+tree[tree[u].r].size+1;
}
void split(int u,int x,int &l,int &r)
{
    if(!u)
    {
        l=r=0;
        return ;
    }
    if(tree[u].val<=x)
    {
        l=u;
        split(tree[u].r,x,tree[u].r,r);
    }
    if(tree[u].val>x)
    {
        r=u;
        split(tree[u].l,x,l,tree[u].l);
    }
    update(u); 
}

感觉 split\rm split 本质上没有修改 tree[]\rm tree[] 本身啊,为什么最后还要 update\rm update 一下呢?

2023/12/19 23:57
加载中...