天天看点

lca最近公共祖先(st表/倍增)

1.求出每个元素在树中的深度

2.用st表预处理的方法处理出f[i][j],f[i][j]表示元素i上方第2^j行对应的祖先是谁 

3.将较深的点向上挪,直到两结点的深度相同

4.深度相同后,祖先可能就在上方,再走几步就到了,于是两个点同时向上移

具体的方法和代码贴在下面 ↓

lca最近公共祖先(st表/倍增)

2.用st表预处理的方法处理出f[i][j]

3.先比较a,b两点哪个较深,将较深的点赋值给a

将较深的点向上挪,直到两结点的深度相同

lca最近公共祖先(st表/倍增)
lca最近公共祖先(st表/倍增)