Shunpower @ 2022-05-21 10:20:23
打普通可持久化 FHQ 的时候,merge 应该这么写:
int merge(int x,int y){
if(!x||!y){
return x|y;
}
if(a[x].num<a[y].num){
int newn=newp(0);//*
a[newn]=a[x];
a[newn].r=merge(a[newn].r,y);
change(newn);
return newn;
}
else{
int newn=newp(0);//*
a[newn]=a[y];
a[newn].l=merge(x,a[newn].l);
change(newn);
return newn;
}
}
可以观察到我们新开了节点,但是为什么可持久化文艺 FHQ 就不需要新开节点去可持久?
by Subset_Sum @ 2022-05-21 10:28:28
@BMTXLRC
您也没写,能解释一下吗?
我是lz小号
by BMTXLRC @ 2022-05-21 10:30:58
https://www.luogu.com.cn/record/76114811
by BMTXLRC @ 2022-05-21 10:31:25
要调大数组,反正开不开无所谓,我觉得开最好,都能AC
by Subset_Sum @ 2022-05-21 10:32:10
@BMTXLRC
谢谢,所以开不开都是一样的对吧
by BMTXLRC @ 2022-05-21 10:32:48
我的理解是分裂的时候就已经开了节点了,再开一个就重复了一遍,至于可持久化平衡树的问题,我觉得不开也可以,看个人习惯吧。
by BMTXLRC @ 2022-05-21 10:33:14
@HJL_yyds 至少经过我的测试,可持久化文艺平衡树开不开都一样,我一会儿测可持久化平衡树
by BMTXLRC @ 2022-05-21 10:34:06
https://www.luogu.com.cn/record/76115167
这一份可持久化平衡树没有开节点,也是AC的
by Yahbim @ 2022-05-21 10:51:37
@BMTXLRC AC 是数据弱,不开新节点是可以卡的。数据弱到了 erase 写错都可以 AC 的程度。
by Yahbim @ 2022-05-21 10:52:38
@HJL_yyds 文艺平衡树不知道,但我觉得至少普通的可持久化 fhq 的 merge 要新开节点,不然 erase 会挂掉
by BMTXLRC @ 2022-05-21 10:56:14
@Yahbim 请教一下,这玩意要怎么卡啊/kk