首页 > 其他分享 >LCA

LCA

时间:2024-01-26 19:56:10浏览次数:22  
标签:code 从大往 queryfather int 小里 LCA

LCA

定义


\(树上两点向上跳到最近の重点\)

        1  
       / \ 
      2   3 
     / \   \ 
    4   5   6 
    // LCA( 4 , 5 ) = 2 ;
    // LCA( 2 , 6 ) = 1 ;  

如何求


倍增思想

设$x_1、x_2、x_3 ···· x_k \in Z $

总会有 \(\alpha\) = $ 2^{ x_1 } + ··· + 2^{ x _ k } $

( 不是很需要证 ... )

∴ 从大往小里跳

$ queryfather[ x ][ i ] = queryfather[ \ \ queryfather[ x ][ i - 1 ] \ \ ][ i - 1 ] $

$ code: $

void peikongLca( )
{
    for( int i = 1 ; i <= n ; ++ i )
    {
        for( int j = 1 ; j < 20 ; ++ j )
        {
            queryfather[ i ][ j ] = queryfather[ queryfather[ i ][ j - 1 ] ][ j - 1 ] ; 
        }
    }
}

求LCA

先把小的往上跳使深度相同

再一起往上跳

$\color{red} 注 \ \ \ \ \ \ 意 \ \ ! \ \ ! \ \ ! \ \ ! $

要跳到距LCA 1距离

标签:code,从大往,queryfather,int,小里,LCA
From: https://www.cnblogs.com/hangry/p/17990568

相关文章

  • DFS求LCA
    Updateon2023.7.17:该技巧目前已知的最早来源:skip2004。Updateon2023.7.17:比较时,取时间戳较小的结点也是正确的,不用记录深度。DFS序求LCA无论是从时间常数,空间常数还是好写程度方面均吊打欧拉序。定义DFS序表示对一棵树进行深度优先搜索得到的结点序列,而时间戳DF......
  • Hazelcast 的事务处理与一致性保证
    1.背景介绍在现代分布式系统中,事务处理和一致性保证是非常重要的问题。Hazelcast是一个高性能的分布式计算平台,它提供了一种高效的事务处理和一致性保证机制。在这篇文章中,我们将深入探讨Hazelcast的事务处理和一致性保证机制,并分析其核心概念、算法原理、实现细节以及未来发展......
  • Volcano 原理、源码分析(一)
    0.总结前置1.概述2.Volcano核心概念2.1认识Queue、PodGroup和VolcanoJob2.2.Queue、PodGroup和VolcanoJob的关系3.Volcano调度框架概览4.源码分析4.1Action实现在哪里?4.2从main函数入手看调度器启动过程4.2.1入口逻辑4.2.2NewScheduler()......
  • LCA
    ST表LCA\(O(n\logn)\)预处理,\(O(1)\)查询。空间\(O(n\logn)\)考虑欧拉序,设\(dfn[u]\)为点\(u\)在欧拉序中第一次出现的位置不妨设\(dfn[u]<dfn[v]\),\(lca(u,v)\)即为\([dfn[u],dfn[v]]\)中深度(或者\(dfn\))最小的点剩下的问题是静态RMQ,ST表解决优化做法来......
  • [Ynoi2007]rfplca/[CF1491H] Yuezheng Ling and Dynamic Tree
    题目描述给定一棵大小为\(n\)的\(1\)为根节点的树,树用如下方式给出:输入\(a_2,a_3,\dots,a_n\),保证\(1\leqa_i<i\),将\(a_i\)与\(i\)连边形成一棵树。接下来有\(m\)次操作,操作有两种:1lrx令\(a_i=\max(a_i-x,1)(l\leqi\leqr)\)。2uv查询在当前的\(a\)......
  • st表lca
    structLca{ inttot=0; intdep[N],pos[N],lca[N*2][20],lg[N*2]; voidpre(intx,intfa){ dep[x]=dep[fa]+1,pos[x]=++tot,lca[tot][0]=x; for(inti=h[x];i;i=d[i].n){ inty=d[i].b; if(y==fa)continue; pre(y,x);lca[++tot][0]=x; } } intxiao(in......
  • MySQL 连接字符串中加入 nullCatalogMeansCurrent = true 的含义
    nullCatalogMeansCurrent的含义:nullCatalogMeansCurrent=true#在指定的数据库中查找需要的表nullCatalogMeansCurrent=false#在服务器全部数据库中查找需要的表不同MySQL驱动nullCatalogMeansCurrent默认情况:从mysql-connector-java5.x版本起,nullCatal......
  • P3379 【模板】最近公共祖先(LCA)
    原题链接非常详细的题解见洛谷,个人见解见代码#include<bits/stdc++.h>usingnamespacestd;#defineN500005vector<int>G[N];//链树,以链上的元素为根节点的树voidadd(intx,inty){G[x].push_back(y);G[y].push_back(x);}intfa[N][21]={0};intdepth[N]......
  • 最近公共祖先(LCA)
    最近公共祖先(LCA)概念在有根树中,两个点,会有共同的祖先,离他们两最近的公共祖先,即为LCA求法向上表记法O(n)从一个点开始,向上遍历,把走过的点标记一下再从另外一个点开始,向上遍历,如果走到的点已经被标记,即为LCA最坏的情况是条链,\(O(n)\)的复杂度倍增法O(logn)先预处理下各......
  • 11.21学习小结 //LCA
    倍增求LCA参考博文:https://www.cnblogs.com/hulean/p/11144059.html参考博文:https://www.cnblogs.com/jvxie/p/4854719.html·记录每个点的深度,和往前2^i的祖先。·先把两个点提到同一高度,再统一开始跳。不可以直接跳到相同祖先处,因为可能是LCA的祖先·裸板子:洛谷P3379wa......