find的两种写法
  • 板块学术版
  • 楼主Hisaishi_Kanade
  • 当前回复26
  • 已保存回复26
  • 发布时间2022/9/24 22:02
  • 上次更新2023/10/27 10:04:29
查看原帖
find的两种写法
575994
Hisaishi_Kanade楼主2022/9/24 22:02

Rt,有一些困惑。

我惯用的是循环写法:

inline int find(int x){
	while(x!=f[x])
		x=f[x]=f[f[x]];
	return x;
}

然后我突然发现除了我以外全班都是这样写的:

int find(int x){
	return x==f[x]?x:(f[x]=find(f[x]));
}

我想了想,我的写法似乎每次只能将长度干掉一半,而其他人的写法是全部连到祖先上去,那不是理应第二种吊打第一种吗?可是我拍了上百组,都是第一种时间小于等于第二种?

为什么?

2022/9/24 22:02
加载中...