官术网_书友最值得收藏!

2.2 最近公共祖先LCA

最近公共祖先(Lowest Common Ancestors,LCA)指有根樹中距離兩個節點最近的公共祖先。祖先指從當前節點到樹根路徑上的所有節點。

uv的公共祖先指一個節點既是u的祖先,又是v的祖先。uv的最近公共祖先指距離uv最近的公共祖先。若vu的祖先,則uv的最近公共祖先是v

可以使用LCA求解樹上任意兩點之間的距離。求uv之間的距離時,若uv的最近公共祖先為lca,則uv之間的距離為u到樹根的距離加上v到樹根的距離減去2倍的lca到樹根的距離:dist[u]+dist[v]-2×dist[lca]。

求解LCA的方法有很多,包括暴力搜索法、樹上倍增法、在線RMQ算法、離線Tarjan算法和樹鏈剖分。

在線算法:以序列化方式一個一個地處理輸入,也就是說,在開始時并不需要知道所有輸入,在解決一個問題后立即輸出結果。

離線算法:在開始時已知問題的所有輸入數據,可以一次性回答所有問題。

主站蜘蛛池模板: 舟曲县| 德钦县| 老河口市| 明溪县| 青海省| 株洲市| 五原县| 通道| 乌兰县| 饶阳县| 镇赉县| 达日县| 张家界市| 志丹县| 宜丰县| 海阳市| 疏勒县| 舞阳县| 河北省| 普安县| 铁岭县| 阳江市| 阿克苏市| 九龙县| 桂东县| 津市市| 内黄县| 新晃| 南安市| 德钦县| 苏尼特左旗| 巨鹿县| 大渡口区| 铜陵市| 丘北县| 报价| 周宁县| 阿克苏市| 天津市| 谷城县| 同心县|