CF1062E Company

对于一个询问 [l,r],假设 lca(l,l+1,...,r)=u

如果删去了点 x,使得 lcau 下移到了点 v,说明 x 一定在 u 的子树内并且不在 v 的子树内。

这样顺序好像不太对,这样说吧:

如果你想让答案从 u 变成 v,那么你需要尽可能选一个不在 v 子树内的点

不难发现,取一个 [l,r]dfs 序的最小,或者取个最大,答案就这两种情况,不可能更优了。

因为如果能到 v 的话,如果 vdfs 序在中间,那你取最小和最大都行;如果 vdfs 序在两边,那总有一边是不在 v 的子树里的。

于是取 [l,r]dfs 序最小/最大然后取深度 max 即可。

复杂度 O(nlog2n)

评测记录(Happy New Year!)。

posted @   Arghariza  阅读(7)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
点击右上角即可分享
微信分享提示
主题色彩