关于int变量参与bool运算结果错误
查看原帖
关于int变量参与bool运算结果错误
1175391
___1cm___楼主2024/10/4 15:40

为什么treap模板有段代码

if(!son[rt][0] && !son[rt][1]){
    num[rt]--,siz[rt]--;
    if(!num[rt]){
        rt=0;
    }
}else if(son[rt][0] && !son[rt][1]){
    rot(rt,1);
    del(son[rt][1],x);
}else if(!son[rt][0] && son[rt][1]){
    rot(rt,0);
    del(son[rt][0],x);
}else{
    bool b=(rd[son[rt][0]]>rd[son[rt][1]]);
    rot(rt,b);
    del(son[rt][b],x);
}

这样写可过,但是中间两个if合并成

if(!son[rt][0] && !son[rt][1]){
    num[rt]--,siz[rt]--;
    if(!num[rt]){
        rt=0;
    }
}else if(!son[rt][0] || !son[rt][1]){
    rot(rt,son[rt][0]);
    del(son[rt][son[rt][0]],x);
}else{
    bool b=(rd[son[rt][0]]>rd[son[rt][1]]);
    rot(rt,b);
    del(son[rt][b],x);
}

这样简写后就会WA 6个点,为什么呢?求大佬解答

2024/10/4 15:40
加载中...