news 2026/5/5 9:52:37

算法竞赛备考冲刺必刷题(C++) | 洛谷 P3379 【模板】最近公共祖先(LCA)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
算法竞赛备考冲刺必刷题(C++) | 洛谷 P3379 【模板】最近公共祖先(LCA)

本文分享的必刷题目是从蓝桥云课洛谷AcWing等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。

欢迎大家订阅我的专栏:算法题解:C++与Python实现!

附上汇总贴:算法竞赛备考冲刺必刷题(C++) | 汇总


【题目来源】

洛谷:P3379 【模板】最近公共祖先(LCA) - 洛谷

【题目描述】

如题,给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先。

【输入】

第一行包含三个正整数N , M , S N,M,SN,M,S,分别表示树的结点个数、询问的个数和树根结点的序号。

接下来N − 1 N-1N1行每行包含两个正整数x , y x, yx,y,表示x xx结点和y yy结点之间有一条直接连接的边(数据保证可以构成树)。

接下来M MM行每行包含两个正整数a , b a, ba,b,表示询问a aa结点和b bb结点的最近公共祖先。

【输出】

输出包含M MM行,每行包含一个正整数,依次为每一个询问的结果。

【输入样例】

5 5 4 3 1 2 4 5 1 1 4 2 4 3 2 3 5 1 2 4 5

【输出样例】

4 4 1 4 4

【算法标签】

《洛谷 P3379 最近公共祖先(LCA)》 #最近公共祖先LCA# #模板题# #O2优化#

【代码详解】

#include<bits/stdc++.h>usingnamespacestd;constintN=500005;intn,m,s,a,b;// n: 节点数,m: 查询数,s: 根节点vector<int>e[N];// 邻接表存储树intdep[N];// 节点的深度intfa[N][20];// 倍增祖先表,fa[u][i]表示u的2^i级祖先// 深度优先搜索,预处理深度和祖先表voiddfs(intu,intfather){// 计算当前节点的深度dep[u]=dep[father]+1;// 初始化直接父节点fa[u][0]=father;// 预处理倍增祖先表for(inti=1;i<=19;i++)fa[u][i]=fa[fa[u][i-1]][i-1];// 遍历子节点for(intv:e[u])if(v!=father)// 避免走回父节点dfs(v,u);}// 求两个节点的最近公共祖先intlca(intu,intv){// 第一步:将u和v调整到同一深度if(dep[u]<dep[v])swap(u,v);// 将u向上跳,直到与v同深度for(inti=19;i>=0;i--)if(dep[fa[u][i]]>=dep[v])u=fa[u][i];// 如果此时u==v,说明v是u的祖先if(u==v)returnv;// 第二步:u和v同时向上跳for(inti=19;i>=0;i--)if(fa[u][i]!=fa[v][i])// 如果祖先不同,就一起向上跳u=fa[u][i],v=fa[v][i];// 此时u和v的父节点就是LCAreturnfa[u][0];}intmain(){// 输入树的信息cin>>n>>m>>s;// 读入n-1条边for(inti=1;i<n;i++){intx,y;cin>>x>>y;e[x].push_back(y);e[y].push_back(x);}// 从根节点s开始DFS,预处理深度和祖先表dfs(s,0);// 处理m个查询for(inti=1;i<=m;i++){inta,b;cin>>a>>b;cout<<lca(a,b)<<endl;// 输出LCA}return0;}

【运行结果】

5 5 4 3 1 2 4 5 1 1 4 2 4 4 3 2 4 3 5 1 1 2 4 4 5 4
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 12:39:26

YOLOv8部署到生产环境的五大注意事项

YOLOv8部署到生产环境的五大注意事项 在智能视觉系统日益普及的今天&#xff0c;目标检测模型从实验走向落地已成为AI工程化的核心命题。YOLO系列自诞生以来&#xff0c;凭借“单次推理、实时检测”的设计理念&#xff0c;始终站在工业应用的前沿。而2023年发布的YOLOv8&#x…

作者头像 李华
网站建设 2026/5/2 19:50:38

ciscn2024初赛 Reverse全题解 复盘

萌新第一篇博客&#xff0c;如有错误请多指正 这次本同校的队伍打爆了&#xff0c;争取明年能进决赛吧 Reverse asm_re 打开是一段ida里复制出来的汇编&#xff0c;但是把源文件的十六进制也复制出来了。 将十六进制写进新的文件&#xff0c;选择arm小端序&#xff0c;ida反…

作者头像 李华
网站建设 2026/4/22 22:00:44

YOLOv13涨点改进 | 全网独家二次创新、特征融合改进篇 | AAAI 2026 | 引入GMAFusion门控调制注意力融合模块,二次创新,通过自适应特征调制和融合,助力YOLOv13有效涨点

一、本文介绍 🔥本文给大家介绍使用GMAFusion门控调制注意力融合模块改进YOLOv13网络模型,能够显著提升其多尺度特征提取、特征融合和感受野扩展能力,增强对复杂场景和小物体检测的适应性。通过自适应特征调制和融合,这些模块帮助YOLOv13在实时检测中高效运行,提升精度与…

作者头像 李华
网站建设 2026/5/1 9:56:46

YOLOv11涨点改进 | NeurIPS2025最佳论文!注意力改进篇| 引入Gated Attention门控注意力模块、太牛了!直接拯救了大模型的发展,助力目标检测、图像分割、图像分类有效涨点

一、本文介绍 🔥千问团队引入了Sigmod门控机制,减少“注意力下沉现象”,直接提升大型语言模型的性能和训练稳定性。小伙伴写论文,做实验可以多参考别人优秀论文,分析问题,解决问题的思路。 🔥本文给大家介绍使用Gated Attention模块改进YOLOv11模型可以显著提升其性…

作者头像 李华
网站建设 2026/5/1 22:10:14

【性能监控新纪元】:基于.NET 8的C#跨平台监控工具架构深度剖析

第一章&#xff1a;性能监控新纪元的背景与意义 随着云计算、微服务架构和容器化技术的广泛应用&#xff0c;传统性能监控手段已难以应对现代分布式系统的复杂性。系统组件数量呈指数级增长&#xff0c;服务间调用链路错综复杂&#xff0c;使得故障定位、性能瓶颈识别变得愈发困…

作者头像 李华
网站建设 2026/5/4 4:21:54

YOLOv8竞赛刷榜利器:Kaggle目标检测项目推荐

YOLOv8竞赛刷榜利器&#xff1a;Kaggle目标检测项目推荐 在Kaggle这类以结果驱动的数据科学竞赛中&#xff0c;时间就是排名。尤其是目标检测任务&#xff0c;参赛者往往面临模型训练慢、环境配置复杂、实验迭代周期长等现实问题。一个高效的工具链&#xff0c;不仅能让你快速验…

作者头像 李华