社区讨论
求解倍增求LCA的常数优化
学术版参与者 12已保存回复 15
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 15 条
- 当前快照
- 1 份
- 快照标识符
- @mi7chcw8
- 此快照首次捕获于
- 2025/11/20 19:25 4 个月前
- 此快照最后确认于
- 2025/11/20 20:30 4 个月前
RT,这是求LCA过程
CPPint lca(int x,int y){
if(dep[x]<dep[y]) swap(x,y);
while(dep[x]>dep[y]){
x=fa[x][lg[dep[x]-dep[y]]-1];//lg数组是log2()
}
if(x==y) return x;
for(int i=lg[dep[x]]-1;i>=0;i--){
if(fa[x][i]!=fa[y][i]){
x=fa[x][i];y=fa[y][i];
}
}
return fa[x][0];
}
预处理lg数组如下:
CPPfor(int i=1;i<=n;i++)
lg[i]=lg[i-1]+(1<<lg[i-1]==i);
蒟蒻求解这个求的过程是如何实现的,以及的含义是什么?
回复
共 15 条回复,欢迎继续交流。
正在加载回复...