【LOJ#6669】Nauuo and Binary Tree
1|0题目
题目链接:https://loj.ac/p/6669
这是一道交互题。
Nauuo 是一个喜欢二叉树的女孩子。
这天,她创造了一个有 个节点的二叉树。节点的编号从 到 ,其中 是二叉树的根节点。
不过,她不记得这棵二叉树具体长什么样子了,她只记录了二叉树上任意两个节点之间的距离。你可以通过向她询问有关距离的信息来还原这棵二叉树,两个节点之间的距离定义为它们之间最短路上的边数。
你可以向 Nauuo 询问不超过 次有关距离的信息。你只需要告诉她 号节点的父亲的编号就可以了。
。
2|0思路
先用 次询问得出每一个点的深度。然后从小到大枚举深度。
假设我们枚举到深度 ,那么我们已经构建出深度为 的点的二叉树了。我们先将这棵树 dfs 一遍并重剖。
然后依次枚举深度为 的点 。先令 是 号节点,询问 所在重链深度最深的节点 与 之间的距离。根据 ,可以得到 的深度。
由于这个 一定在 所在重链上,而一条重链上的点深度两两不同,所以我们可以确定点 。
由于这是一棵二叉树,而且 一定和 分别位于 的两棵子树内,所以我们可以确定 的一个祖先是 除 所在子树外的另一棵子树。那么我们就令 等于这棵子树的根节点,继续上述操作直到 即可。
根据重链剖分的性质,一个点向上的轻链数量是 的,所以我们操作次数是 的。由于树剖常数很小,所以可以通过 次的限制。
时间复杂度 。
3|0代码
__EOF__

本文作者:stoorz
本文链接:https://www.cnblogs.com/stoorz/p/14214485.html
关于博主:菜死了 /fad
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/stoorz/p/14214485.html
关于博主:菜死了 /fad
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构