求问FHQ_Treap启发式合并写法
  • 板块学术版
  • 楼主无产者万岁
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/11/16 13:21
  • 上次更新2023/11/16 15:39:09
查看原帖
求问FHQ_Treap启发式合并写法
117192
无产者万岁楼主2023/11/16 13:21
int DSU(int x,int y)
{
	if(!x||!y)
		return x|y;
	if(tree[x].siz>tree[y].siz)
		swap(x,y);
	int rx,ry;
	split(x,tree[y].val,rx,ry);
	tree[y].lc=DSU(tree[y].lc,rx);
	tree[y].rc=DSU(tree[y].rc,ry);
	return y;
}
void DSU(int x,int &y)
{
	if(!x)
		return;
	DSU(tree[x].lc,y);
	DSU(tree[x].rc,y);
	tree[x].lc=tree[x].rc=0;
	int rx,ry;
	split(y,tree[x].val,rx,ry);
	y=merge(merge(rx,x),ry);
}

目前蒟蒻看到过这两种写法,哪种更优秀?抑或是说我写的都是假的DSU?

2023/11/16 13:21
加载中...