Loading

P2323 [HNOI2006] 公路修建问题 最小生成树 / 二分

考虑这么一个事情,要求最大值最小,所以考虑二分。

题目说至少 \(k\) 条要修建 \(1\) 号边,我们在二分的 check 中不妨保留所有边权 \(\le mid\)\(1\) 号边,此时会形成若干个连通块,考虑这么一个事情,假设连通块数量为 \(p\),那么本质上能用到的 \(1\) 号边本质上是 \(n - p\) 条,所以我们判断一下 \(n - p\)\(k\) 的大小关系,然后我们再连通所有能连的 \(2\) 号边,看是否全部连通即可。

但是你发现这样做的时间复杂度是 \(O(n \log^2 n)\) 的,考虑如何继续优化,对于每个 \(1\) 号边的权值排序,然后用双指针维护合并并查集信息,无需二分,复杂度即做到 \(O(n \log n)\)

posted @ 2024-10-16 21:08  Alexande  阅读(10)  评论(0)    收藏  举报