紧急集合 / 聚会
对于这道题目,我们考虑三个点的位置
如果三个点共线,比如下面这个样子
那么应该放在哪里呢?很显然应该放在中间这个点这里
如果三个点不共线呢?这个时候我们以两个点为端点画线,再画出其他分支
那么现在这个点应该放在哪里呢?应该放在中间“T”字形的交点那里
于是我们就清楚了,结合上前一种情况,我们最终应该放的是两两连线的唯一交点(这个交点肯定是唯一的)
这里可以用树上差分啦,我一来就想到的是树上差分(因为相当于找交点嘛,当一个点最后被覆盖了三次肯定就是目标点了),然而题解用的都是LCA,说实话有点难想到,然而按照我们上面画的图,LCA当然也是对的
update 2024.5.27
好像没有办法用树上差分,因为这里有多个询问,于是只能用题解的LCA
所以记住这个模型:树上三个点两两连线一定只会交于一点,并且这个点是三个点两两LCA中深度最大的LCA
BTW,如果这道题目只用求距离的话,就是“异象石”这道题目的简单情况
update 2024.8.18
想想这个讨论
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构