最近做了两道并查集的题目,今天做的一道是more is better,选出集合元素最多的集合
我的习惯是每一次查的时候用while找到root,然后进行集合合并,这样的实现就超时了。在网上找了代码用递归的方式寻找root,每一层寻找均将root值赋值给当前元素,作为当前元素的根。实际上就是将集合压扁了,在每一次查找根的过程中,将枝叶节点直接链接至根节点,所以用了递归反而之后的查找会比较块。
HDUO 1856 more is better
本文通过一道名为moreisbetter的编程题,介绍了并查集在查找根节点时使用递归优化的方法。通过将子节点直接链接到根节点,减少后续查找的时间复杂度。
最近做了两道并查集的题目,今天做的一道是more is better,选出集合元素最多的集合
我的习惯是每一次查的时候用while找到root,然后进行集合合并,这样的实现就超时了。在网上找了代码用递归的方式寻找root,每一层寻找均将root值赋值给当前元素,作为当前元素的根。实际上就是将集合压扁了,在每一次查找根的过程中,将枝叶节点直接链接至根节点,所以用了递归反而之后的查找会比较块。
HDUO 1856 more is better

被折叠的 条评论
为什么被折叠?