社区讨论

spaly竟然和splay一样快!!!!!!

P3391【模板】文艺平衡树参与者 8已保存回复 13

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
13 条
当前快照
1 份
快照标识符
@mi6h0zm8
此快照首次捕获于
2025/11/20 04:44
4 个月前
此快照最后确认于
2025/11/20 05:08
4 个月前
查看原帖
spaly:
CPP
void spaly(node* &o , int k)
{
    pushdown(o);
    int d = cmp(o , k);
    if (d == 1)
        k -= o -> ch[0] -> s + 1;
    if (d != -1)
    {
        spaly(o -> ch[d] , k);
        rotate(o , d ^ 1);
    }
}
splay:
CPP
void splay(node* &o , int k)
{
    pushdown(o);
    int d = cmp(o , k);
    if (d == 1)
        k -= o -> ch[0] -> s + 1;
    if (d != -1)
    {
        node *p = o -> ch[d];
        pushdown(p);
        int d2 = cmp(p , k);
        int k2 = k;
        if (d2 == 1)
            k2 -= p -> ch[0] -> s + 1;
        if (d2 != -1)
        {
            splay(p -> ch[d2] , k2);
            if (d == d2)
                rotate(o , d ^ 1);
            else
                rotate(o -> ch[d] , d);
        }
        rotate(o , d ^ 1);
    }
}
不可思议,匪夷所思!!!!! 是不是洛谷数据太水了

回复

13 条回复,欢迎继续交流。

正在加载回复...