lca的三种算法【倍增 / RMQ / Tajan】
lca:树上两点的最近公共祖先倍增算法(在线)利用dfs记录结点深度deep[i],并求出单点祖先:f[i][j]:从结点i向上出发2j2^j 步的祖先,可推出→ f[i][0] = fa[i], f[i][j] = f[f[i][j - 1]][j - 1] 求两点x,y的lca,不妨令deep[x] >= deep[y],x先爬deep[x]-deep[y]步使得x和y的deep相同;
原创
2017-11-01 23:45:27 ·
735 阅读 ·
0 评论