lanqiao3516 景区导游(LCA)

This commit is contained in:
2025-04-09 21:44:09 +08:00
parent b2cf4dbd9e
commit 4457d7c586

View File

@@ -3,11 +3,11 @@
LCA-最近公共祖先
比如原本的遍历顺序是 a->b->c, 总路径长度为sum若要跳过b则新的路径长度为
sum-d(a,b)-d(b,c)+d(a,c)
其中 d(a,b、d(b,c、d(a,c使用LCA求解更快
其中 d(a,b)、d(b,c)、d(a,c)使用LCA求解更快
若要求u->v的路径长度, 等于求u-> root + v -> root - 2*(root->LCA(u ,v))
即分别从u和v走到根结点再减去2倍的根结点到 (u,v) 的最近公共祖先的路径长度
倍增法求LCA时间复杂度-O(nlogn单次LCA查询时间复杂度-O(1ognk次查询时间复杂度-O(klogn
总时间复杂度O(n+k)1ogn由于n,k同級该算法时间复杂度为O(nlogn)
倍增法求LCA时间复杂度-O(nlogn), 单次LCA查询时间复杂度-O(1ognk次查询时间复杂度-O(klogn
总时间复杂度O((n+k)1ogn)由于n,k同級, 该算法时间复杂度为O(nlogn)
*/
#include<bits/stdc++.h>
using namespace std;