首页 > 其他分享 >st表lca

st表lca

时间:2023-12-20 11:44:24浏览次数:20  
标签:fa int pos tot st dep lca


struct Lca{
	int tot=0;
	int dep[N],pos[N],lca[N*2][20],lg[N*2];
	void pre(int x,int fa){
		dep[x]=dep[fa]+1,pos[x]=++tot,lca[tot][0]=x;
		for(int i=h[x];i;i=d[i].n){
			int y=d[i].b;
			if(y==fa) continue;
			pre(y,x);lca[++tot][0]=x;
		}
	}
	int xiao(int x,int y){
		if(dep[x]<dep[y]) return x;
		return y;
	}
	void ST(){
		lg[0]=-1;
		for(int i=1;i<=tot;i++) lg[i]=lg[i/2]+1;
		for(int j=1;j<=19;j++){
			for(int i=1;i+(1<<j)-1<=tot;i++) lca[i][j]=xiao(lca[i][j-1],lca[i+(1<<(j-1))][j-1]);
		}
	}
	int LCA(int x,int y){
		if(pos[x]>pos[y]) swap(x,y);
		int len=pos[y]-pos[x]+1;
		return xiao(lca[pos[x]][lg[len]],lca[pos[y]-(1<<lg[len])+1][lg[len]]);
	}	
	int dis(int x,int y){
		int _lca=LCA(x,y);
		return dep[x]+dep[y]-2*dep[_lca];
	}
}Tl;

标签:fa,int,pos,tot,st,dep,lca
From: https://www.cnblogs.com/hubingshan/p/17916198.html

相关文章

  • Could not build wheels for pillow, which is required to install pyproject.toml-b
     参考来源,致敬大佬。ERROR:CouldnotbuildwheelsforPillow,whichisrequiredtoinstallpyproject.toml-basedprojects-CSDN博客报错:Couldnotbuildwheelsforpillow,whichisrequiredtoinstallpyproject.toml-basedprojects的解决-CSDN博客 本人小白......
  • Java8 list的lambda表达式
    List<PersonList>list=newArrayList<PersonList>(){{add(newPersonList("张三","1"));add(newPersonList("李四","2"));add(newPersonList("王五","3"));add(newPersonLi......
  • SpringBoot入门三十四,自定义Springboot Starter
    1.前言SpringBootStarter是一种用于简化SpringBoot应用程序配置的机制。通过自定义Starter,我们可以将一组相关的配置、依赖和自动配置打包成一个可重用的模块,使得其他开发者可以轻松地集成和使用。本篇文章将引导你创建一个简单的自定义SpringBootStarter,并演示如何在应用程序......
  • 16.特殊控件 Toast
    Toast是什么一种消息框类型永远不会获得焦点无法被点击Toast显示的时间有限,Toast会根据用户设置的显示时间后自动消失是系统级别的控件,属于系统settingsToast类的思想:就是尽可能不引人注意,同时还向用户显示信息,希望他们看到Toast定位appium用的是uiau......
  • java.io.FileInputStream#read(byte[]) 阻塞导致没办法继续执行的问题处理
    在对设备节点进行操作的时候,发现读的时候进入阻塞状态(可能是设备节点异常),导致没办法继续执行后面的代码 查看了一下,文件的方式读,是没办法配置超时的自动报异常的设计了一段代码,针对读阻塞做异常处理 publicstaticStringsendCmdToFile(StringfromFile,Stringcmd......
  • mysql-----------------------------------------------testdata
    6种SQL数据去重技巧大揭秘!原创 测试开发成长录 测试开发成长录 2023-12-1714:08 发表于广东你终于来了,戳蓝一键关注 测试开发成长录不负时光,遇见每一次成长   在上一期中,我们学习了SQL基本语法|查询语句的使用方法和技巧。接下来,我们将重点学习SQL中去重数据......
  • 鸿蒙开发入门:Stage模型应用程序包结构
    Stage模型应用程序包结构基于Stage模型开发的应用,经编译打包后,其应用程序包结构如下图**应用程序包结构(Stage模型)**所示。开发者需要熟悉应用程序包结构相关的基本概念。在开发态,一个应用包含一个或者多个Module,可以在DevEcoStudio工程中创建一个或者多个Module。Module是HarmonyO......
  • subprocess.CalledProcessError: Command ‘[‘ninja‘, ‘-v‘]‘ returned non-zero
    一、原因pytorch版本大于1.5二、解决1、降低pytorch版本将pytorch版本降到1.5以下2、禁用ninjiapytorch默认使用ninjia作为backend,将其禁用。替换为以下代码setup(...,cmdclass={#'build_ext':BuildExtension,'build_ext':BuildExtensi......
  • Stable Diffusion Prompt
    Prompt俗称咒语,实际上也是很难完全把控,在实际生图过程中需要不断的摸索。本文从“规则”、“原理”、“结合扩散模型”三个角度对Prompt进行探讨,希望小伙伴们能对Prompt整体有立体的认识。一、规则1、增强/减弱(emphasized)实质是:缩放语义向量:::warning()强度变为1.1倍[]......
  • Stable Diffusion Seed
    点击了附加/Extra就会看到扩展栏种子变异(Variationseed)变异种子,规则和Seed一致变异强度(Variationstrength)变异种子和原种子的差异强度,为0时为原种子,为1时是新种子(变异种子)。调整变异强度简单正向prompt(1hotgirl),原始种子为1,变异种子为3,不断调整变异强度,得到的图像如下......