一个小问题

P3391 【模板】文艺平衡树

AC_CSP @ 2023-03-03 17:27:07

这是第一篇题解的代码

inline void rotate(int x){
    int fnow=s[x].f,ffnow=s[fnow].f;
    pushdown(x),pushdown(fnow);
    bool w=which(x);
    s[fnow].son[w]=s[x].son[w^1];
    s[s[fnow].son[w]].f=fnow;
    s[fnow].f=x;
    s[x].f=ffnow;
    s[x].son[w^1]=fnow;
    if(ffnow){
        s[ffnow].son[s[ffnow].son[1]==fnow]=x;
    }
    update(fnow);
}

求问这里为什么先下放儿子,我感觉似乎要先下放父亲?

int fnow=s[x].f,ffnow=s[fnow].f;
pushdown(x),pushdown(fnow);

by Mikefeng @ 2023-03-03 17:37:30

不如投入fhq的怀抱


by AC_CSP @ 2023-03-03 17:41:41

@Mikefeng 我不太知道 FHQ 可以 LCT 吗,如果可以的话我就改写 FHQ qwq


by Mikefeng @ 2023-03-03 17:42:48

好吧不能,要加log


|