模板--------LCA

各种LCA的模板 好久没有写博客了,联赛前一天来写一点关于LCA的各种模板 极力推荐第四种方法1.Sparce_Table 算法把树按照DFS序重新编号并求出DFS序列后,利用序列中两点编号之间的最小值即为LCA的性质,通过RMQ求解。 代码如下:/* ID: Sunshine_cfbsl LANG: C++ PROG: LCA */ #include<cstdio> #include<cmath> #incl 阅读详情

倍增法求LCA,在线算法:

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cmath>
#include<cstring>
using namespace std;

struct mc
{
	int x,y,ne;
}e[1000010];
int num=0,v[500010];
void put(int x,int y)
{
	num++;
	e[num].x=x;
	e[num].y=y;
	e[num].ne=v[x];
	v[x]=num;
}

int f[500010][21],d[500010];
void dfs(int x,int father,int deep)
{
	f[x][0]=father;
	d[x]=deep;
	for (int i=v[x];i;i=e[i].ne)
	{
		int y=e[i].y;
		if(y!=father)
		dfs(y,x,deep+1);
	}
}
int n,m,s;
void pre()
{
	for (int j=1;j<=20;j++)
	  for (int i=1;i<=n;i++)
	    f[i][j]=f[f[i][j-1]][j-1];
}

int LCA(int x,int y)
{
	if (d[x]<d[y]) swap(x,y);
	int k=log(n)/log(2)+1;
	for (int i=20;i>=0;i--)
	{
		if (d[f[x][i]]>=d[y])
			x=f[x][i];
	}
	if (x==y) return x;
	k=log(x)/log(2)+1;
	for (int i=20;i>=0;i--)
	{
		if (f[x][i]!=f[y][i])
		{
			x=f[x][i];
			y=f[y][i];
		}
	}
	return f[x][0];
}

int main()
{
	int x,y;
	scanf("%d%d%d",&n,&m,&s);
	for (int i=1;i<n;i++)
	{
		scanf("%d%d",&x,&y);
		put(x,y);
		put(y,x);
	}
	dfs(s,0,1);
	pre();
	for (int i=1;i<=m;i++)
	{
		scanf("%d%d",&x,&y);
		printf("%d\n",LCA(x,y));
	}
	return 0;
}


手把手教你学simulink(43.2)--光伏发电场景示例:基于Simulink开发一个光伏发电系统仿真模型:采用神经网络控制策略进行优化 需求分析光伏发电系统(Photovoltaic System, PV)是将太阳能转换为电能的重要手段,广泛应用于分布式发电、并网发电和离网供电等领域。随着光伏技术的发展,如何提高光伏发电系统的效率和稳定性成为研究的重点。传统的控制策略(如PID控制器)虽然简单易实现,但在复杂工况下(如光照强度变化、温度波动等)难以达到最优性能。因此,引入先进的控制策略,如神经网络控制(Neural Network Control, NNC),可以显著提升系统的响应速度和鲁棒性。 阅读详情

相关推荐

瑞芯微RK3588开发板VSCode远程开发全攻略:从SSH配置到插件优化

本文详细介绍了如何在瑞芯微RK3588开发板上配置VSCode远程开发环境。从Ubuntu系统下的SSH服务设置、VSCode Remote-SSH扩展安装,到连接建立、基础工具链部署,再到针对ARM平台的性能优化与调试配置,提供了一套完整的实战指南,帮助开发者高效利用本地资源进行嵌入式开发。

weixin_28831341的博客 621

lca模板

1.树上倍增 #include <queue> #include <cstdio> using namespace std; const int MAXN = 1e5 + 5; const int MAXTEP = 45; int n, m; int depth[MAXN], f[MAXN][MAXTEP]; int len, head[MAXN]; struct edge { int to, next; }e[MAXN * 2]; void add (int, int);

C2022lihan的博客 341

iTerm2+oh-my-zsh最全配置

iTerm2+oh-my-zsh最全配置安装前先看效果图一.安装[iTem2](https://iterm2.com/)二.安装[oh-my-zsh](https://ohmyz.sh/)三.安装[Powerline](https://powerline.readthedocs.io/en/latest/installation.html)四.安装 [Meslo](https://github.com/powerline/fonts) 字体库五.安装agnoster主题六.安装语法高亮七.安装代码补全插件八

xinximo的博客 2609

LCA模板

存一下模板啦。#include #include #include #include #include #include #include using namespace std; #define il inline #define rg register const int N=500020; int i,j,k,v,p,L,q,e,R,tea,x,y,n,m,s,inde,maxn,cnt=1

xfydemx的博客 189

泛微E10 eBuilder低代码平台避坑指南:新手最容易犯的5个错误及解决方案

本文针对泛微E10 eBuilder低代码平台的新手开发者,总结了5个最常见错误及解决方案,包括表单联动配置、流程设计权限、动作流时序、数据加工类型转换和权限管理过度配置等问题。通过实战经验和代码示例,帮助开发者避开常见陷阱,提升开发效率。

weixin_30919429的博客 538

C++/WinRT入门指南:现代Windows原生开发的核心技术

Windows运行时(WinRT)是微软为现代Windows应用开发设计的一套跨语言API框架,它基于COM技术原理构建,提供了统一的二进制接口标准。这项技术的核心价值在于让开发者能够以原生性能调用系统级功能,同时保持跨语言兼容性。在工程实践中,C++/WinRT作为官方推荐的C++语言投影,通过标准C++语法封装WinRT API,显著降低了开发复杂度。特别是在异步编程场景中,结合C++20协程特性,能够大幅提升代码可读性和维护性。对于需要高性能图形处理、系统集成或跨平台兼容的桌面应用开发,掌握C++/W

weixin_33910191的博客 1195

LCA求解的四种模板

LCA求解的四种模板 或许更好的阅读体验 树剖在线求解LCA 思想 树剖这里就不多解释了,求解LCA的过程就是轻重链的跳转,跟树剖求任意两点间的距离一样的操作,只不过不用线段树去维护disdisdis了,那就直接上代码吧。 代码 #include <bits/stdc++.h> using namespace std; typedef long long ll; const int N = 1e6 + 10; int head[N], to[N << 1], nex[N &lt

lifehappy 468

告别GitHub!手把手教你用Gitblit在Windows 10上搭建私人局域网Git服务器(附SourceTree配置)

本文详细介绍了如何在Windows 10环境下使用Gitblit搭建私有Git服务器,实现局域网内高效代码协作。通过轻量级的Gitblit解决方案,开发者可以享受数据完全自主、离线可用性和局域网高速访问等优势。文章包含从环境准备、安装部署到SourceTree配置的全流程指南,特别适合金融、医疗等敏感行业团队使用。

weixin_30430169的博客 280

【洛谷 P3379】最近公共祖先【LCA模板】

题目描述 题目 如题,给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先。 输入格式 第一行包含三个正整数 N,M,SN,M,SN,M,S,分别表示树的结点个数、询问的个数和树根结点的序号。 接下来 N−1N−1N−1 行每行包含两个正整数 x,yx,yx,y,表示 xxx 结点和 yyy 结点之间有一条直接连接的边(数据保证可以构成树)。 接下来 MMM行每行包含两个正整数 a,ba, ba,b,表示询问 aaa 结点和 bbb 结点的最近公共祖先。 输出格式 输出包含 MMM 行,每行包含一个正整数

绫 1711

AUTOSAR入门

一、AUTOSAR是什么 AUTOSAR组织自己的介绍是 AUTOSAR (AUTomotive Open System ARchitecture) is a worldwide development partnership of vehicle manufacturers, suppliers, service providers and companies from the automot...

天涯遍地是小草的博客 3万+

从时频谱图到智能感知:雷达信号处理的AI进化之路

本文探讨了人工智能在雷达信号处理中的革命性应用,特别是深度学习在时频谱图分析中的突破性进展。通过对比传统信号处理方法与AI驱动的解决方案,展示了CNN、3D CNN等模型在目标检测、行为识别等场景中的优势,并分析了数据获取、模型优化等关键技术挑战。AI赋能的雷达技术已广泛应用于智能交通、工业检测和医疗健康领域,展现出巨大的发展潜力。

weixin_29284201的博客 504

倍增求LCA模板

#include<bits/stdc++.h> using namespace std; typedef long long LL; const int maxn=5e5+10,maxk=1e4+10,lenOfNode=52274,INF=0x3f3f3f3f; int lg[maxn],n,m,d[maxn],f[maxn][21],dep[maxn],cnt; int nxt...

tgyy_cool的博客 202

Simulink仿真模块 - Data Type Conversion

Data Type Conversion将输入信号转换为指定的数据类型 在仿真库中的位置为: Simulink / 常用模块 Simulink / Signal Attributes 模型为: 说明 DataTypeConversion模块可将任何 Simulink®数据类型的输入信号转换为您指定的数据类型。 注意 要通过指定模块参数来控制输出数据类型,或者要从下游模块继承数据类型,使用DataTypeConversion模块。要...

jk_101的博客 2519

ACM LCA 倍增 模板 HDU 5044

LCA 倍增模板O(N*log N),N为点数 最近公共祖先

nickwong & nickwang 1461

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

最近公共祖先(LCA模板总结)

输入:第1行包含一个整数T,表示测试用例的数量。每个测试用例的第1行都包含整数N(2≤N≤10,000),表示树中的节点数。接下来N-1行,每行都包含一对边的整数,第1个整数是第2个整数的父节点(有N个节点的树有N-1条边)。每个测试用例的最后一行都包含两个不同的整数,求其LCA。给你一棵树,找出两点的最近公共祖先LCA。

2301_80882026的博客 418

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

LCA模板(数剖实现)

题目链接:https://www.luogu.org/problemnew/show/P3379 题意:LCA模板题。 思路:今天开始学树剖,先拿lca练练。树剖解lca,两次dfs复杂度均为O(n),每次查询为logn,因此总复杂度为:O(2*n+m*logn)。 代码: #include<cstdio> #include<cstring> using n...

weixin_30794499的博客 82

LCA模板 ( 最近公共祖先 )

LCA 有几种经典的求取方法、这里只给出模板,至于原理我完全不懂。 1、RMQ转LCA、复杂度O(n+nlog2n+m) 大致就是 DFS求出欧拉序 => 对欧拉序做ST表 => LCA(u, v) 即为 u、v 最先出现在欧拉序中的编号之间的最小值。 因为 LCA 的子树中必定有一个节点是 u,一个是 v,而且必定在两个节点到根节点的唯一路径上。 例如有欧拉序列 1...

234

洛谷-P3379-LCA-模板题

洛谷-P3379-LCA-模板题 传送门 什么是LCA?? 具体请查看下面链接 ** https://blog.youkuaiyun.com/qq_44624316/article/details/105165911 ** 这是一道模板题。 卡vector,卡cin. 所以老实点用邻接表和scanf把~ 上面说的很详细啦~ 用的是倍增。暴力的优化。 鬼知道我理解倍增理解了一下午emmm。 (主要是存储和优化位...

qq_44624316的博客 292

Duan2baka的各种LCA模板!

LCA,即最近公共祖先,是在有根树中两个点最近的公共祖先,在树上问题中非常有用QAQ常用LCA求法:一、树链剖分LCA树链剖分LCA,顾名思义,就是用树链剖分求LCA,两个节点从各自的重链往上跳,跳到一条重链上LCA就为上面的那个点 复杂度O(n−qlog(n))O(n-qlog(n))模板代码:(*题为Codevs 2370)#include<algorithm> #include<ctype.

谁能代表肯德基 1274

倍增LCA模板

原帖在这:http://blog.youkuaiyun.com/crazy_ac/article/details/7796497 LCA可以离线tarjan去求,也可以在线倍增去求。 记二维数组p[u][i]表示u的2^i个祖先是谁,i==0就是父节点。那么可以通过 p[u][i]=p[p[u][i-1]][i-1]来递推出所有的情况,然后再求lca(x,y)的时候,根据x,y的深度,先将深度大的点通过p

Broken Wings 838

LCA最近公共祖先求解(四种方法模板)

题目:【模板】最近公共祖先(LCA) 题目链接:【模板】最近公共祖先(LCA) - 洛谷 题面: 树链剖分模板: 思想: 求解LCA的过程就是轻重链的跳转,跟数链剖分求任意两点间的距离一样的操作 #include<bits/stdc++.h> using namespace std; #define endl "\n" #define N 500005 int head[N], to[N << 1], nex[N << 1],...

m0_55682843的博客 2532

poj 1470(LCA模板题)

Closest Common Ancestors Time Limit: 2000MS   Memory Limit: 10000K Total Submissions: 9221   Accepted: 2955 Des

志当存高远 1726

一个朴素的树上倍增求LCA模板

一个朴素的树上倍增求LCA模板 LCA指的是最近公共祖先(Least Common Ancestors) 既然是模板,也不多说啥算法啦 代码(不喜勿喷!) #include &amp;amp;lt;bits/stdc++.h&amp;amp;gt; using namespace std; const int maxn = 500010; int cnt, next[maxn &amp;amp;lt;&amp;amp;lt; 1], to[maxn &amp;

D白 403

【模板】最近公共祖先 lca

【代码】【模板】最近公共祖先 lca。

KatzzZZ的博客 242

【讲解+模板】最近公共祖先(LCA)(倍增)

【模板】最近公共祖先(LCA)(倍增)我认为读者已经掌握(或了解)了: 倍增思想 树(图)的基本概念及简单实现 存图与建图 dfs 嗯,我们来看看最近公共祖先(LCA)的一种实现方式——倍增。最近公共祖先话说什么是最近公共祖先呢?emmm……大家如果知道树的话,应该就知道父亲节点与儿子节点了吧,那么祖先就是父亲的父亲的父亲的……;总之在同一条树链上,若x的深度小于y的深度,则称x是y的祖先。公共祖先

Mashiro_ylb的博客 708
上一篇: 2016.11.10解题报告
下一篇: 2016.11.11解题报告
zero_from
博客等级 码龄10年 11粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值