lanqiao3516 景区导游(LCA)
This commit is contained in:
@@ -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(1ogn),k次查询时间复杂度-O(klogn)
|
||||
总时间复杂度O((n+k)1ogn)由于n,k同級,该算法时间复杂度为O(nlogn)
|
||||
倍增法求LCA时间复杂度-O(nlogn), 单次LCA查询时间复杂度-O(1ogn),k次查询时间复杂度-O(klogn)
|
||||
总时间复杂度O((n+k)1ogn)由于n,k同級, 该算法时间复杂度为O(nlogn)
|
||||
*/
|
||||
#include<bits/stdc++.h>
|
||||
using namespace std;
|
||||
|
||||
Reference in New Issue
Block a user