![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
树形结构-lca
杏花疏影里_吹笛到天明
自能窥宋玉,何必恨王昌。
展开
-
【模板】Tarjan求LCA--离线算法
离线算法先记录所有询问,然后对树做一次dfs求出所有点对的lca在进入u这个点的时候,把边(u,fa(u))删除,此时就形成以u为根的一棵子树,并且记录u已被访问过,然后依次遍历u的所有子节点在遍历结束后,查找所有跟u有关的查询(u,vi),若vi已被访问过,则lca(u,vi)是vi所在子树的根最后在退出u的时候把边(u,fa(u))重新加上下面的例子偷了一下学长的ppt现在先d...原创 2019-03-20 13:50:40 · 241 阅读 · 0 评论 -
【模板】LCA
文章目录LCA算法暴力dfs序+rmqLCA简单说一下,LCA(Least Common Ancestors),最近公共祖先,字面上的意思,就是两个节点的公共祖先中,最近的那一个算法暴力在线算法首先dfs预处理出每个点的深度,然后再将u,v中比较深的那个点往上爬,将他们调整到同一深度然后再一起一步一步地爬树,爬到同一深度暴力算法的复杂度较高,但由于它非常的简单清晰,所以在时间不够的...原创 2019-03-22 13:24:38 · 360 阅读 · 0 评论 -
【模板】LCA的倍增算法
在线算法和st表求区间最值类似暴力求区间最值需要一个一个比较暴力求lca需要一步一步爬树st表用倍增比较一段和一段间的最值启发我们求lca也用倍增,一次向上爬2i2^i2i个点设f(i,j)f(i,j)f(i,j)表示点i向上跳2j2^j2j步之后的点边界:f(i,0)=fa[i]f(i,0)=fa[i]f(i,0)=fa[i] (表示向上跳一步的点)转移:跳2j2^j2j步,先跳...原创 2019-03-22 13:26:36 · 483 阅读 · 0 评论 -
【模板】LCA的RMQ做法(详)
目录时间戳和欧拉序rmqst表在线算法时间戳和欧拉序时间戳(st[i]):第i个节点第一次被访问到的时间,即:若访问一个节点需要花费一个单位时间,第一次访问到当前节点是在第几个单位时间被访问到欧拉序是一棵树按照dfs的顺序产生的序列,相当于模拟dfs的过程For instance:比如说,上面的例子的欧拉序就是:111 222 444 222 555 888 555 ...原创 2019-03-19 13:18:48 · 334 阅读 · 0 评论