【典】P2387 二维限制的图的联通性

有一张 \(n\) 个点, \(m\) 条边的图,每条边有两个权值 \((a_i,b_i)\),现在要选若干条边使得 \(1\)\(n\) 联通,求 \(\max_{i\in E} a_i+\max_{i\in E}b_i\) 的最小值。

\(n,m\le 10^5\)

这类题目一般都保证两维权值可以双指针,也就是令 \(\max a_i\) 变大,那么 \(\max b_i\) 就会变小。

正解做法是 LCT,直接双指针,加边断边维护一下联通性即可,复杂度 \(O(n\log n)\)

实现难度不小。

考虑用并查集进行维护,主要的问题在于并查集只能支持撤销,不能随意删除,不是很好搞。

套上撤销并查集的经典算法是线段树分治,但是这样需要每条边都是一个区间。

把线段对应的点放到二维坐标上,最后的答案肯定是把一个左下矩形的边全部加入。

\(\max a_i\) 从大到小移动,每次会删掉一些上面的边,然后加入一些边,注意到一条边的存在时间一定是一个区间。

因此加入的时候把每条边的区间算出然后维护即可。

code

CF603E *3000

同理,一维是时间,一维是权值,合法的条件就是不存在孤立点,并查集维护。

uoj693

直接给你写好了并查集。。

一样做就行。

posted @ 2023-12-04 10:35  houzhiyuan  阅读(27)  评论(0编辑  收藏  举报