题解:洛谷 P10113 [GESP202312 八级] 大量的工作沟通
本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。欢迎大家订阅我的专栏算法题解C与Python实现附上汇总贴算法竞赛备考冲刺必刷题C | 汇总【题目来源】洛谷P10113 [GESP202312 八级] 大量的工作沟通【题目描述】某公司有N NN名员工编号从0 00至N − 1 N-1N−1。其中除了0 00号员工是老板其余每名员工都有一个直接领导。我们假设编号为i ii的员工的直接领导是f i f_ifi​。该公司有严格的管理制度每位员工只能受到本人或直接领导或间接领导的管理。具体来说规定员工x xx可以管理员工y yy当且仅当x y xyxy或x f y xf_yxfy​或x xx可以管理f y f_yfy​。特别地0 00号员工老板只能自我管理无法由其他任何员工管理。现在有一些同事要开展合作他们希望找到一位同事来主持这场合作这位同事必须能够管理参与合作的所有同事。如果有多名满足这一条件的员工他们希望找到编号最大的员工。你能帮帮他们吗【输入】第一行一个整数N NN表示员工的数量。第二行N − 1 N-1N−1个用空格隔开的正整数依次为f 1 , f 2 , … f N − 1 f_1, f_2, \dots f_{N-1}f1​,f2​,…fN−1​。第三行一个整数Q QQ表示共有Q QQ场合作需要安排。接下来Q QQ行每行描述一场合作开头是一个整数m mm2 ≤ m ≤ N 2 \leq m \leq N2≤m≤N表示参与本次合作的员工数量接着是m mm个整数依次表示参与本次合作的员工编号保证编号合法且不重复。保证公司结构合法即不存在任意一名员工其本人是自己的直接或间接领导。【输出】输出Q QQ行每行一个整数依次为每场合作的主持人选。【输入样例】5 0 0 2 2 3 2 3 4 3 2 3 4 2 1 4【输出样例】2 2 0【核心思想】问题分析给定一棵以 0 号员工为根的有根树每个员工可以管理其所有后代包括自己。对于多组询问每组给出若干员工编号需要找到一个编号最大的员工使得该员工是所有这些员工的共同祖先即能管理所有参与者。若存在多个取编号最大者。由于祖先关系具有传递性共同祖先即所有节点的最近公共祖先LCA及其祖先。因此问题转化为求一组节点的 LCA最近公共祖先。在从根到该 LCA 的路径上找出编号最大的节点。由于编号不随深度单调不能简单取 LCA 本身的编号需要预处理根到每个节点的路径最大编号。算法选择倍增法求 LCA预处理每个节点的倍增祖先表f[u][k]2 k 2^k2k级祖先和深度dep[u]同时预处理mx[u]表示从根节点到节点u的路径上所有节点编号的最大值。查询过程对每组询问依次将每个参与节点与当前 LCA 合并求 LCAlca getLCA(lca, x)最终得到所有参与节点的 LCAt。答案即为mx[t]因为所有能够管理这些节点的员工正是从根到t路径上的所有节点编号最大者即为该路径最大值。关键步骤读入与建树读取N NN对于i 1 … N − 1 i1 \dots N-1i1…N−1读取f_i在树中添加边(f_i, i)。DFS 预处理从根节点 0 开始 DFS计算每个节点的深度dep[u]、倍增祖先f[u][k]k 0..20 k0..20k0..20以及路径最大编号mx[u] max(mx[parent], u)。LCA 函数使用倍增法求两个节点的最近公共祖先。处理询问对于每组询问读取m和第一个节点将其作为初始 LCA然后依次读取剩余节点不断更新 LCA。最终输出mx[lca]。时间/空间复杂度预处理O ( N log ⁡ N ) O(N \log N)O(NlogN)。每次询问O ( m log ⁡ N ) O(m \log N)O(mlogN)总复杂度可接受N , Q ≤ 10 5 N, Q \le 10^5N,Q≤105。空间复杂度O ( N log ⁡ N ) O(N \log N)O(NlogN)。树上祖先与路径最大值管理关系的树形结构员工之间的管理关系构成一棵树祖先即管理关系。任意一组员工的共同管理者即为它们的公共祖先。最近公共祖先LCA所有公共祖先中深度最大的节点是 LCA它是管理这些员工所需的最低管理者所有能管理这些员工的节点是从根到 LCA 路径上的所有节点。路径最大值预处理由于节点编号不随深度单调需预先计算根到每个节点的路径最大编号以便快速回答“路径上最大编号”的查询。适用场景适用于树形结构中的“最近公共祖先”查询及“路径信息统计”问题特别适合需要多次查询多节点共同祖先的场景。【算法标签】#普及 #最近公共祖先【代码详解】#includebits/stdc.husingnamespacestd;constintN100005;// 最大员工数量intn,q;// n: 员工总数, q: 合作场次intf[N][25];// f[u][i]: u 的 2^i 级祖先根节点 0 的祖先为 0intdep[N];// dep[u]: u 在树中的深度根节点深度为 0intmx[N];// mx[u]: 从根节点到 u 的路径上最大的节点编号vectorintg[N];// 邻接表存储树无向边// 深度优先搜索预处理每个节点的深度、倍增祖先以及路径最大编号voiddfs(intu,intfa){f[u][0]fa;// 直接父节点dep[u]dep[fa]1;// 深度 父节点深度 1mx[u]max(mx[fa],u);// 路径上最大编号 max(父路径最大, 当前节点)// 倍增祖先预处理for(inti1;i20;i)// 2^20 1e5足够覆盖 N{f[u][i]f[f[u][i-1]][i-1];// u 的 2^i 级祖先}// 递归遍历子节点for(intv:g[u]){if(vfa)continue;// 跳过父节点dfs(v,u);}}// 倍增法求最近公共祖先 (LCA)intlca(intu,intv){// 确保 u 的深度不小于 v使 u 位于较深位置if(dep[u]dep[v])swap(u,v);// 将 u 提升到与 v 同一深度for(inti20;i0;i--){if(dep[f[u][i]]dep[v])continue;// 若跳 2^i 步后深度小于 v则跳过该步uf[u][i];// 向上跳 2^i 步}if(uv)returnu;// v 是 u 的祖先// 同时提升 u 和 v直到它们的父节点相同for(inti20;i0;i--){if(f[u][i]f[v][i])continue;// 若跳 2^i 步后相遇则跳过该步避免越界uf[u][i];vf[v][i];}returnf[u][0];// 返回父节点即为 LCA}intmain(){cinn;// 输入员工总数// 读入每个员工的直接领导编号 1 到 n-1for(inti1;in;i){intx;cinx;f[i][0]x;// 记录直接父节点g[x].push_back(i);// 建无向边g[i].push_back(x);}// 从根节点 0 开始预处理dfs(0,0);cinq;// 输入合作场次while(q--){intm;cinm;// 参与本次合作的员工数// 读取前两个员工编号用于初始化 LCAinta,b;cinab;inttlca(a,b);// 当前参与者的 LCA// 依次与剩余员工合并 LCAfor(inti3;im;i){intx;cinx;tlca(t,x);// 更新所有参与者的共同祖先}// 能够管理所有参与者的节点为 t 的所有祖先包括 t// 其中编号最大的节点即为 mx[t]根到 t 路径上的最大编号coutmx[t]endl;}return0;}【运行结果】5 0 0 2 2 3 2 3 4 2 3 2 3 4 2 2 1 4 0

相关新闻

题解:洛谷 P3015 [USACO11FEB] Best Parenthesis S

题解:洛谷 P3015 [USACO11FEB] Best Parenthesis S

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

2026/10/12 13:58:12 阅读更多 →
公平的示例选择——用几个“in-context”例子调解LLM公平性

公平的示例选择——用几个“in-context”例子调解LLM公平性

公平的示例选择——用几个“in-context”例子调解LLM公平性 作者:Valhalla Matrix治理实验室 原创声明:本文为原创技术博客,基于 Valhalla 工程实践编写。 论文锚点:《SMITE: Enhancing Fairness in LLMs through Optimal In-Cont…

2026/10/12 21:47:03 阅读更多 →
库存盘点表格怎么让 AI 自动生成:本地化智能数据处理实操指南

库存盘点表格怎么让 AI 自动生成:本地化智能数据处理实操指南

面向数据分析师、供应链与物流运营、数据运营、财务核算人员 全流程可照做 附可直接复用的指令模板做库存盘点,最花时间的从来不是"数",而是数完之后那一堆对不上的表:账面库存和实盘库存差在哪、哪个品类差得最多、哪个门店长期…

2026/10/12 21:47:09 阅读更多 →

最新新闻

React Native鸿蒙适配实战:RN页面与鸿蒙提醒服务的系统能力桥接

React Native鸿蒙适配实战:RN页面与鸿蒙提醒服务的系统能力桥接

做鸿蒙适配做到第七个页面,CareTipsScreen算是我这轮项目里最头疼、也最有收获的一个。先说清楚它是什么:这是一款健康管理应用里的“每日护理建议”聚合页,用户每天打开应用,能看到系统按时间段推荐的护理建议,比如下…

2026/10/13 13:15:36 阅读更多 →
驱动工具收费怎么办?显卡驱动修复免费替代方案与卸载清理指南

驱动工具收费怎么办?显卡驱动修复免费替代方案与卸载清理指南

前两年我装完系统,第一件事就是找一款驱动管理工具,跑一遍自动检测,网卡、显卡、声卡一次性装齐,整个过程免费,体验也算顺畅。直到前两天,我打开这款老牌驱动工具的新版本,界面确实变干净了&…

2026/10/13 13:15:36 阅读更多 →
DeepSeek Harness:Agent框架的全插件化设计与可回放日志实践

DeepSeek Harness:Agent框架的全插件化设计与可回放日志实践

这两年做 Agent 工程化,我最大的感受是:光有一个能跑通 demo 的工作流远远不够,真正让人头疼的是框架耦合、排查困难、扩展两难。团队内部折腾了大半年,最终沉淀出一套叫 DeepSeek Harness 的 Agent 运行框架。名字里带 Harness&a…

2026/10/13 13:15:36 阅读更多 →
构建帧率无关的时钟可视化内核:requestAnimationFrame与时间流映射

构建帧率无关的时钟可视化内核:requestAnimationFrame与时间流映射

1. 项目概述:这不是一个普通时钟,而是一次视觉逻辑的重新校准“炫酷的时钟效果”——这五个字在前端开发、数字艺术、交互设计甚至新媒体运营的日常沟通中,出现频率远超表面看起来的那么简单。它从来不是指“把时间显示出来”,而是…

2026/10/13 13:15:36 阅读更多 →
免费搭建本地AI知识库:用Cherry Studio和开源模型实现私有文档智能检索

免费搭建本地AI知识库:用Cherry Studio和开源模型实现私有文档智能检索

最近整理资料时我一直在想一个问题:手头文档越堆越多,光是项目方案、会议纪要、行业报告、个人笔记就占了几个文件夹,想快速找出某个结论时经常得翻半天。后来我尝试把常用的云上AI助手当检索工具,但每次都要上传文档、担心隐私、…

2026/10/13 13:15:36 阅读更多 →
个人主页置顶帖与投稿汇总实操指南:打造内容导航体系

个人主页置顶帖与投稿汇总实操指南:打造内容导航体系

1. 先搞清楚:置顶帖和投稿汇总到底在解决什么问题1.1 置顶帖是主页的第一屏,也是你的数字名片我见过太多创作者陷入同一个困境:内容发了几百条,主页却像一个乱糟糟的仓库,新访客点进来根本不知道你擅长什么、写过哪些代…

2026/10/13 13:14:25 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →