社区讨论

关于10分的merge函数愚蠢错误

P3521[POI 2011] ROT-Tree Rotations参与者 4已保存回复 3

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
3 条
当前快照
1 份
快照标识符
@lobx9m11
此快照首次捕获于
2023/10/30 04:27
2 年前
此快照最后确认于
2023/11/04 09:33
2 年前
查看原帖
10分
C
int merge(int l,int r,int rtl,int rtr)
{
	if(l==r)
	{ 
		siz[rtl]+=siz[rtr];
		return rtl;
	}
	if(!rtl||!rtr)
		return rtl+rtr;
   //...
}
100分
C
int merge(int l,int r,int rtl,int rtr)
{
	if(!rtl||!rtr)
		return rtl+rtr;
	if(l==r)
	{ 
		siz[rtl]+=siz[rtr];
		return rtl;
	}
	//...
}
如果把l==r写在上面,有可能改变00节点的sizsiz,从而使所有空节点都有大小,爆炸了。

回复

3 条回复,欢迎继续交流。

正在加载回复...