首页 > 其他分享 >LCA(最近公共祖先)应用

LCA(最近公共祖先)应用

时间:2024-05-14 11:08:44浏览次数:22  
标签:拆成 祖先 路径 纵向 相交 公共 LCA

LCA 可以将一条树上路径拆成一或两半,所以我们可以将很多关于区间的算法拓展到树上。

仓鼠找suger 洛谷P3398

考虑两条相交的纵向路径 \([A,B]\) 和 \([C,D]\),如图:

image

如果两条路径相交那么 \(C\) 是 \(B\) 的祖先,\(A\) 是 \(D\) 的祖先,对于任意的路径 \([A,X,B]\) 和 \([C,Y,D]\),如图:

image

可以将两条路径通过 LCA \(X,Y\) 各自拆成两段纵向路径,分别判断纵向路径 \([A,X]\)、\([B,X]\) 与 \([C,Y]\)、\([D,Y]\) 是否相交,同理前缀和和差分也可以扩展到树上。

标签:拆成,祖先,路径,纵向,相交,公共,LCA
From: https://www.cnblogs.com/Livedreamyhy/p/18190910

相关文章

  • ABC353E字典树处理最长公共前缀
    https://atcoder.jp/contests/abc353/tasks/abc353_e其实就是字典树板子题。似乎遇到最长公共前缀,就该想到字典树。依次加入每个字符串:维护一个数组siz来统计在当前串之前的串在对应点的出现次数。手模一下字典树的建树过程,显然如果当前串\(S_i\)能跑到一个曾经串\(S_......
  • 什么是公共云?
    概述公共云是一个虚拟资源池,可自动置备并通过自助服务界面在多个客户端间进行分配,其中的虚拟资源来自第三方公司所有和管理的硬件设备。当工作负载出现意外需求波动时,可直接通过公共云进行横向扩展。如今,公共云通常不会作为独立的基础架构解决方案来部署,而是被作为异构混合......
  • 235. 二叉搜索树的最近公共祖先(leetcode)
    https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-search-tree/要点是如果root是在p和q之间的值,意味着已经找到了最近公共祖先/***Definitionforabinarytreenode.*structTreeNode{*intval;*TreeNode*left;*TreeNode*rig......
  • 236. 二叉树的最近公共祖先(leetcode)
    https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-tree/description/要点是后序遍历,这样就可以从树底开始搜索,寻找最近公共祖先classSolution{public://返回的是最近公共祖先,若返回null则说明没有TreeNode*lowestCommonAncestor(TreeNode*r......
  • 蛇形变量名(nake_case)速转驼峰变量名(camelCase)__Java
    最近遇到当JavaBean不遵循驼峰命名规则时,使用反射赋值失败。但是我的类中属性个数非常多(一个一个改也太恼火了),因此写了个将蛇形变量名转驼峰变量名的方法,在此分享出来供大家使用。publicstaticvoidconvertToCamelCase(Objectobj){Class<?>clazz=obj.getClas......
  • 总结一下公共字段(aop加自定义注解加反射)
    应用场景在一些业务类的创建中,我们需要反复对不同的类的同一个属性进行赋值,那么问题就出现了**代码冗余**如何解决呢思路:利用aop创造一个切面如何创造一个切面呢实质上就是扫描加设置增强位置那么如何扫描到对应的赋值方法上呢这里需要用到自定义注解了自定义注解://这......
  • python脚本获取当前浏览器客户端的公共ip以及其详细信息
    python脚本获取当前客户端的公共ip以及其详细信息importrequestsfromflaskimportFlask,request,make_response,send_from_directoryfromdatetimeimportdatetimeimportasynciofromhypercorn.asyncioimportservefromhypercorn.configimportConfigimportos......
  • 洛谷题单指南-动态规划2-P1439 【模板】最长公共子序列
    原题链接:https://www.luogu.com.cn/problem/P1439题意解读:求最长公共子序列的长度。解题思路:1、O(n^2)的方法:动态规划设两个排列为a,b设dp[i][j]表示a[1~i]与b[1~j]的最长公共子序列长度根据公共子序列结尾是否包含a[i]、b[j]是否相等分情况讨论:如果a[i]==b[j]  则结尾......
  • dotnet 已知问题 错误标记 MethodImplOptions.InternalCall 特性参数将会在类型访问之
    本文将记录一个dotnet的已知问题。当自己不小心在方法上不正确标记了MethodImplAttribute特性时,错误选择了MethodImplOptions.InternalCall参数,那将会在运行的过程在,在此类型被访问之前就抛出了System.TypeLoadException异常,错误信息是Internalcallmethodwithnon_NUL......
  • 14. 最长公共前缀
    题目链接:实现一、\(\rmTrie\)求多串的最长公共前缀,首先想到\(\rmTrie\)。classSolution{public:staticconstintN=210;intch[N][26],idx,cnt[N];voidinsert(strings){intp=0;for(inti=0;i<s.size();i++){......