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