【题解】Solution Set - NOIP2024集训Day52 图论杂题

【题解】Solution Set - NOIP2024集训Day52 图论杂题

https://www.becoder.com.cn/contest/5625


「CF1253F」Cheap Robot

感觉做过啊。

如果我们把充电站两两连边,边权为两点间距离,建一张新图,那么 \((a,b)\) 的答案就是 \((a,b)\) 间路径上最大值的最小值。自然想到 kruskal 重构树。

考虑改进建图。

首先这个连边肯定是不会途径第三个充电中心的。

没什么用……


感觉也没有题解说的那么玄乎。

主要是要去求,每个点到离她最近的充电中心的距离,设其为 \(dis_x\)

对于一条边 \((u,v,w)\) 可以经过她的必要条件是:\(c\ge dis_u+dis_v+w\)

这个不等式其实表明,我们可以从 \(u\) 安全的到达 \(v\),并走到一个最近充电中心。(然后我们可以继续从这个最近的充电站再走回 \(v\),然后再继续走。

所以如果有一条路径上的边都满足上面这个不等式,那么这个 \(c\) 一定是合法的,所以这个条件又是充分的。


剩下的就简单了。

我们把每条边重新赋值为 \(dis_u+dis_v+w\),然后就是问 \((a,b)\) 间路径上最大值的最小值。kruskal 重构树然后在线 lca 查询就行。

posted @ 2024-10-15 08:17  CloudWings  阅读(6)  评论(0编辑  收藏  举报