poj1330 Nearest Common Ancestors P(LCA)

LCA-倍增思想 POJ1330 Nearest Common Ancestors LCA 倍增 阅读详情

#poj1330 Nearest Common Ancestors P(LCA)
###传送门:http://poj.org/problem?id=1330

#include<iostream>
#include<cstdio>
#include<cstring>
#include<vector>
using namespace std;
const int N = 1e4 + 10;

int _,n;
int dfn[N],du[N],pre[N][30],lg[N];
vector<int>q[N];

void init()
{
	for(int i = 0; i <= n + 5; i++){
		q[i].clear();
		dfn[i] = 0;
		du[i] = 0;
	}
	memset(pre,0,sizeof pre);
}

void dfs(int u,int fa)
{
	dfn[u] = dfn[fa] + 1;
	pre[u][0] = fa;
	for(int i = 1; (1 << i) <= dfn[u]; ++i)
		pre[u][i] = pre[pre[u][i - 1]][i - 1];
	for(int j = 0; j < q[u].size(); j++){
		int v = q[u][j];
		if(v != fa)dfs(v,u);
	}
}

int lca(int x,int y)
{
	if(dfn[x] < dfn[y])swap(x,y);
	while(dfn[x] > dfn[y])
		x = pre[x][lg[dfn[x] - dfn[y]] - 1];
	if(x == y)return x;
	for(int k = lg[dfn[x]]; k >= 0; --k)
		if(pre[x][k] != pre[y][k])
			x = pre[x][k],y = pre[y][k];
	return pre[x][0];
}

int main()
{
	int _;
	cin >> _;
	for(int i = 1; i < N; i++)lg[i] = lg[i - 1] + (1 << lg[i - 1] == i);
	while(_--){
		init();
		cin >> n;
		for(int i = 1; i < n; i++){
			int a,b;
			cin >> a >> b;
			q[a].push_back(b);
			du[b]++;
		}
		for(int i = 1; i <= n; ++i){
			if(du[i] == 0){
				dfs(i,0);
				break;
			}
		}
		int x,y;
		cin >> x >> y;
		cout << lca(x,y) << endl;
	}
	return 0;
}
【论文导读】ICDM2018|SASRec---基于自注意力机制的序列推荐(召回) 前言本次分享2018年发表在ICDM上的论文----「Self-Attentive Sequential Recommendation」。主要是应用self-attention机制来做一... 阅读详情

相关推荐

SE-0526激光避障雷达扫描传感器输入输出连线方法及PLC联机实例说明

SE-0526激光避障雷达扫描传感器广泛应用于原材料运输与处理、移动装配、托盘或货架运输、产成品自动运输、生产线自动对接,餐厅自助送餐等AGV小车、服务机器人、仓储机器人、无人叉车导航、避障、定位等。 本文重点介绍SE-0526激光避障雷达扫描传感器输入输出连线方法及PLC联机实例说明。

华翔天诚科技 2695

P3379最近公共祖先(LCA)

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

weixin_30321709的博客 311

台达PLC DIAdesigner-AX 编程笔记

1、登陆台达思图软件网站,选择Download,登陆注册好的账号,下载DIAInstaller,下载后安装(安装目录不要修改);

weixin_45823621的博客 6676

【bzoj4540】【HNOI2016】【序列】【莫队+st表】

Description   给定长度为n的序列:a1,a2,…,an,记为a[1:n]。类似地,a[l:r](1≤l≤r≤N)是指序列:al,al+1,…,ar- 1,ar。若1≤l≤s≤t≤r≤n,则称a[s:t]是a[l:r]的子序列。现在有q个询问,每个询问给定两个数l和r,1≤l≤r ≤n,求a[l:r]的不同子序列的最小值之和。例如,给定序列5,2,4,1,3,询问给定的两个数

sunshinezff的专栏 816

从RJPG到温度地图:基于大疆TSDK的热红外数据精准处理与Pix4D拼接实战

本文详细解析了如何利用大疆TSDK将无人机拍摄的热红外RJPG图像精准转换为带有地理坐标的温度TIFF文件,并完成Pix4D拼接生成正射温度地图的全流程。文章重点阐述了辐射定标的原理、TSDK关键参数(测量距离、湿度、发射率、反射温度)的设置与微调方法,以及Pix4D处理中的常见报错解决方案,旨在帮助用户实现从原始数据到可分析温度地图的精准处理。

docker7nomad的博客 464

PTC-6-2004汽轮机性能计算源代码,pycharm-包括试验计算、一类修正、二类修正-以CC350-16.7/0.98/0.5/538/538型汽轮机为例,5万7千字,过程不易欢迎打赏

汽轮机性能计算完整源代码-简化试验-包括试验计算一类修正计算和二类修正计算目录图 1 工程结构。

weixin_43441028的博客 997

【编程之美】初赛2015 待填坑

题目1 : 彩色的树 时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 给定一棵n个节点的树,节点编号为1, 2, …, n。树中有n - 1条边,任意两个节点间恰好有一条路径。这是一棵彩色的树,每个节点恰好可以染一种颜色。初始时,所有节点的颜色都为0。现在需要实现两种操作: 1. 改变节点x的颜色为y; 2. 询问整

一地鸡毛 2140

Carla-UE4Editor导入RoadRunner地图文件(保姆级教程)

以Carla官网导入RoadRunner地图的标准文档为参考,里面增添了很多细节和注意事项,遇到问题的小伙伴过来看看吧。

DSK_981029的博客 1万+

luogu题解 P3379 【模板】最近公共祖先(LCA)

看了看题解的dalao们,都是什么RMQ啊,在线的倍增啊(然后我都不会) 嗯,就发一篇tarjan的离线写法把(刚好最近写tarjan) (第一篇题解) 嗯,大致的思路如下: 先选择一个节点u为根节点,从根节点开始搜索。(标记u已访问过) 遍历该点u的所有儿子节点v,并标记v已访问过。 若v还有儿子节点,对v重复ii操作,否则进入下一操作。 把v合并到u上(并查集)。 把当前的点设为u,遍历与u有询问关系的节点v。 如果v在之前已经被访问过,那么u和v的最近公共祖先就是v通过并查集合并后的

qq_39912789的博客 1137

数字IC后端PPA优化实战:Timing一致性策略与Module Region布局技巧

本文深入探讨了数字IC后端设计中的PPA优化实战,重点解析了Timing一致性问题及其解决方案。通过调整Clock Uncertainty、Timing Derate和RC Scale Factor等关键参数,使Innovus等PR工具的分析结果更接近PrimeTime签核结果。同时,文章详细介绍了Module Region布局技巧,通过为关键模块划定物理区域,优化单元摆放,有效减少线延迟,从而协同提升时序收敛效率与设计可预测性。

weixin_29218963的博客 203

【Docker】搭建一个媒体服务器插件后端API服务 - MetaTube

本教程基于群晖的NAS设备DS423+的docker功能进行搭建,DSM版为 7.2.1-69057 Update 5。MetaTube是一个媒体服务器插件,主要用于Emby和Jellyfin媒体服务器。它的主要功能是从互联网上抓取内容并响应 JSON 数据,然后通过预安装的 MetaTube 插件请求服务器并下载相应的元数据,以与 Jellyfin/Emby 服务器配合使用。使用 MetaTube 的步骤大致如下:部署后端:首先,需要部署一个名为​ 的后端 API 服务器来抓取内容。

小小笔记大大用处 1万+

算法-蓝桥杯习题(3-1)

蓝桥杯习题   目录   入门训练(详见 算法-蓝桥杯习题(1-1))Go   基础练习(详见 算法-蓝桥杯习题(2-1))Go 基础练习(详见 算法-蓝桥杯习题(2-2))Go 算法训练(详见 算法-蓝桥杯习题(3-1))Go 算法训练(详见 算法-蓝桥杯习题(3-2))Go 算法训练(详见 算法-蓝桥杯习题(3-3))Go 算法训练(详见 算法-蓝桥杯习题(3-4))Go...

GFox-鬼狐 3万+

计算机视觉(角点检测)- 1 - Harris角点检测

计算机视觉(角点检测)-1.1 Harris角点检测学习前言 学习前言   今天更新一下计算机视觉的东西吧,哈哈哈o( ̄︶ ̄)o   关于角点检测呢,就是检测图像中角点的算法,常见的有四种常见的算法:Moravec角点检测算法、 Harris角点检测算法、Shi-Tomasi 算法、FAST角点检测算法,不过常用的就两种吧——Harris角点检测算法、Shi-Tomasi 算法(反正我基本上就只用到这两种,先着重介绍前面两种,后面再花世界介绍吧)(~ ̄▽ ̄)~ ...

qq_40374812的博客 1万+

poj1330Nearest Common Ancestors(LCA小结)

题目请戳这里 题目大意:意如其名。 题目分析:本题只有一个查询,所以可以各种乱搞过去。 不过对于菜鸟而言,还是老老实实练习一下LCA算法。 LCA有很多经典的算法。按工作方式分在线和离线2种。 tarjan算法是经典的离线算法。这篇博客讲的太好懂了,我也不好意思班门弄斧,具体戳进去看看就会明白。重点是那个插图,一看秒懂。 在线算法主要有倍增算法和转RMQ算法。 另外LCA还有2种更为

ophunter的专栏 1052

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

POJ 1330 Nearest Common Ancestors【LCA】

题目链接: http://poj.org/problem?id=1330 题意: 裸的LCA 代码: 倍增: #include<iostream> #include<cstring> using namespace std; const int maxn = 10005; const int maxm = 20; struct ...

An55511的博客 199

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

POJ 1330 Nearest Common Ancestors

LCA入门题,虽然这样说,但是没有用到LCA,因为询问只有一组。就用最最直白的方法。所谓最近公共祖先,就是两个点分别向上走,直到根,两条路径第一个相遇的点就是两个点的LCA。 #pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #include #include #include #include

DotACM 679

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

POJ 1330 Nearest Common Ancestors(LCA,在线处理三种方式)

题目链接: POJ 1330 Nearest Common Ancestors 题意: 给一个nn点和n−1n-1条边的树,第nn行是要查询的两个节点的最近公共祖先,输出要查询的最近公共祖先。 数据范围:n≤104n\leq 10^{4} 分析: 可以学习《挑战程序设计竞赛》P328−P331P_{328}-P_{331}暴力求解记节点vv到根的深度为depth[v]depth[

ramay7 543

POJ1330 Nearest Common Ancestors (JAVA)

经典LCA操作。。 贴AC代码 import java.lang.reflect.Array; import java.util.*; public class POJ1330 { // 并查集部分 static int[] p; static int find(int u){ if(p[u]!=u){ ...

ditumao9111的博客 257

LCA模板 Nearest Common Ancestors POJ - 1330

转自:https://www.cnblogs.com/morslin/p/11853482.html 题目链接:https://vjudge.net/problem/POJ-1330#author=baobaobear #include <iostream> #include <cstdio> #include <cstring> #include <al...

A 160

pku 1330 Nearest Common Ancestors LCA离线

pku 1330 Nearest Common Ancestors 题目链接: http://poj.org/problem?id=1330 题目大意: 给定一棵树的边关系,注意是有向边,因为这个WA一发。然后N个顶点给出了N-1有向边,求一对点之间的最近公共祖先 思路: 裸的离线tarjan Lca即可,但注意是有向边,需要先找出根节点,数组标记。其次要注意前向星存的时候只存...

ddqb3235的博客 155

poj1330 Nearest Common Ancestors

LCA模板题

YHaX的博客 360

POJ 1330 Nearest Common Ancestors(LCA)

可用一个足够大的数组用来存结点的父亲结点来构建树,如p[son]=par。为了快速找到LCA,可先计算两个结点的深度差,深度大的结点向上找父亲,直到深度相同。循环操作:判断两个结点是否相等,若相等则为LCA,否则两结点继续向上同时找父亲。

快速进入竞赛模式! 378

poj 1330 Nearest Common Ancestors 朴素LCA算法

Nearest Common AncestorsTime Limit: 1000MS Memory Limit: 10000KTotal Submissions: 9213 Accepted: 4883DescriptionA rooted tree is a well-know

kongming_acm的专栏 848

poj_1330 Nearest Common Ancestors

LCA問題,用的應該是最樸素的算法,先前序遍歷

xyinktw的专栏 578

poj1330Nearest Common Ancestors 1470 Closest Common Ancestors(LCA算法)

LCA思想:http://www.cnblogs.com/hujunzheng/p/3945885.html 在求解最近公共祖先为问题上,用到的是Tarjan的思想,从根结点开始形成一棵深搜树,非常好的处理技巧就是在回溯到结点u的时候,u的子树已经遍历,这时候才把u结点放入合并集合中,这样u结点和所有u的子树中的结点的最近公共祖先就是u了,u和还未遍历的所有u的兄弟结点及子树中的最...

aipiannian6725的博客 187
上一篇: #codeforces 1213D2(Equalizing by Division)(思维好题)
下一篇: codeforces-1213G-Path Queries(并查集+离线)
橘子灬君
博客等级 码龄9年 1粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值