倍增求LCA (1)树上倍增法 预处理 设f[x,k]表示x的2^k辈祖先,即从x向根节点走2^k步到达的节点.特别地,若该节点不存在,则令f[x,k]=0.f[x,0]就是x的父节点.可以得出f[x][k]=f[f[x][k-1]][k-1]. 我们可以对树进行遍历,由此得到f[x,0],再计算f数组所有值. 以上部分是预处理,时间复杂度为O(nlogn).之后可以多次对不同的x,y计算LCA,每次询问的时间复杂度为O(logn). [代码实现] 预处理 void dfs(int u,int …