
倍增
文章平均质量分 58
notmuch
这个作者很懒,什么都没留下…
展开
-
蓝桥杯系列 - 2018国赛 -版本分支
非常明显的 LCA 问题,可以用倍增算法来解决。 一些前期铺垫: 我们记节点v到根的深度为depth(v)。那么如果节点w是节点u和节点v的最近公共祖先的话,让u往上走(depth(u)-depth(w))步,让v往上走(depth(v)-depth(w))步,都将走到节点w。因此,我们首先让u和v中较深的一个往上走|depth(u)-depth(v)|步,再一起一步步往上走,直到走到同一个节点,就可以在O(depth(u)+depth(v))的时间内求出LCA。 分析刚才的算法,两个节点到达同一节点后,原创 2021-05-07 15:22:17 · 311 阅读 · 0 评论 -
POJ1330,Nearest Common Ancestors(LCA+RMQ/倍增/Tarjan)
LCA的裸题。LCA可以用三种方式求解,其中离线算法有Tarjan,在线算法有倍增,RMQ,个人觉得RMQ效率会高一点。 有个博客讲解的很好,链接: https://blog.youkuaiyun.com/my_sunshine26/article/details/72717112 这里我总结了一下三种方法的关键点: 1.Tarjan求LCA 核心:离线+DFS后序遍历+并查集 1.开设vis[i], fa[...原创 2019-08-25 14:36:52 · 179 阅读 · 0 评论