并查集

直奔主题

并查集的作用?

就是无向图中点的相互连接,判断几个点是否连在一起,或者连在一起的点之间的距离

最基础的并查集的模板:

int find(int x)
{
    return p[x]==x?p[x]:p[x]=find(p[x]);
}

这是很简单的,由此模板延伸出来的几个关键点:

(1)不是孤立的点的相连,而是放在图里判断是否成环

例如:1250. 格子游戏 - AcWing题库

这个题就是将点放在图里,延伸成边,判断是否成正方形(环)。

(2)并查集与DP的结合

例如:1252. 搭配购买 - AcWing题库

01背包问题中,加入并查集合,将几个背包连在一起。

(3)并查集与离散化结合

例题:237. 程序自动分析 - AcWing题库239. 奇偶游戏 - AcWing题库

并查集合元素大小比较大,而集合大小有限,这时候必须用离散化,离散集合

(4)带边权的并查集

例题:238. 银河英雄传说 - AcWing题库

初始化每个集合的大小,并且能够求出集合内元素与元素之间的距离大小

(5)带边权的并查集和扩展域的方法

例题:239. 奇偶游戏 - AcWing题库240. 食物链 - AcWing题库

这两个题是重点 建议反复复习。

具体的方法建议结合题目复习吧,一两句也总结不来

end!!!

 

posted @ 2022-03-21 23:04  秦末  阅读(31)  评论(0)    收藏  举报
1 博文导航目录