如果你写Fhq-Treap全WA

P3391 【模板】文艺平衡树

newbie_QwQ @ 2024-04-08 17:01:41

可以检查一下自己是不是翻转的时候先分裂>=r再分裂<=l-1写成先分裂<=l-1再分裂>=r了。


by Laoshan_PLUS @ 2024-04-21 16:48:59

其实写成后者也可以,但要注意细节。

split(rt, x - 1, l, r);
split(r, y - x + 1, p, r);

by hubblexuAKIOI @ 2024-05-24 19:40:17

@Laoshan_PLUS 想问下为什么如题所述的写法即 T.split(T.rt,l-1,x,y),T.split(y,r,y,z) 会出问题,split 不是按值分裂吗,为什么会出现顺序问题?谢谢qwq


by hubblexuAKIOI @ 2024-05-24 20:09:41

@Laoshan_PLUS 没事打扰了,是其他部分的问题


by Laoshan_PLUS @ 2024-05-24 20:13:02

@hubblexuAKIOI 不是啊,文艺平衡树是按排名分裂的。如果你先分裂 <=l-1 的话,当你从第一次分裂出来的 “右树” 里再分裂第二次时,你要分裂的 “右树” 里的左子树大小是 y-x+1,而不是 x-1。可以画图理解一下。


by OrinLoong @ 2024-08-21 11:17:26

@Laoshan_PLUS thx,已AC


|