并查集
CCCCDEV_CCCC
志在四方少年,羡慕南飞的雁
展开
-
1111 修复公路
每两个村庄之间都得到达,注意是到达也就是见解联系。一开始都是道路为0,然后不断添加道路。tht就居然做水题,我想举报他。这不就是模板并查集啊。原创 2022-07-31 23:01:42 · 213 阅读 · 0 评论 -
2121 拆地毯
2121 拆地毯原创 2022-07-14 22:12:54 · 78 阅读 · 0 评论 -
1197 星球大战
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>int s[400001];//并查集祖先数组struct node{ int n; node *next;//链表存图(或使用前向星) node(int n) { this->n=n; next=NULL; } node()原创 2021-08-09 15:12:08 · 97 阅读 · 0 评论 -
2024 食物链
2024 食物链刚刚做完团伙,发现这两个题非常的相似,这个题也是需要维护两个信息,一个是同类一个是敌人关系,所以还是得运用反集的关系,只不过这一个题还有点像程序自动排序这道题,最后需要查询一波哦,突然恍然大悟,就像启发式合并一样,我说的是我被启发了,不是说知识点像,这个题因为有三种关系,所以,需要定义三个集合来表示#include<iostream>using namespace std;long long n,m,fa[150010];int opt,x,y,ans;int fi原创 2021-08-07 22:37:08 · 165 阅读 · 0 评论 -
1892 团伙
1892 团伙这个题之前从zp老师那听过这里涉及到并查集的反集操作,和环形DP的性质很像,再看一个集合用来存储其中这两个集合是相反的,称之为反集第一数据范围的时候需要开两倍再次总结一下这个反集的操作说白了,我们既要维护一个人的朋友和敌人,维护两个信息,所以使用两个集合,如果可以,个人猜测用结构体也可以实现吧最后,要求团队的个数,那就是统计代表元素的个数,最后输出#include<iostream>#include<cstdio>#include<algorit原创 2021-08-07 22:05:15 · 60 阅读 · 0 评论 -
1196 银河英雄传说
1196 银河英雄传说练习并查集,并查集其实就是给二分图里铺垫,二分图和并查集都非常重要我们得把题目进行提炼有三万个战舰,初始化每一个战舰单独在一列,现在有n个指令1.将x战舰所在作为整体,接到y战舰所在的列尾部2.询问x与y是否在同一列,如果在,输出他们两个之间隔了多少战舰其实很明显就是并查集了,不过感觉第二个操作比较难我们可以简单的实现合并和查询是否联通,但是如何维护之间隔了多少战舰可以利用类似于前缀和的数组sum,sum[x]表示x到fa[x]中间有多少战舰然后就可以快乐的AC了#原创 2021-08-07 20:20:59 · 62 阅读 · 0 评论 -
1955 程序自动分析
1955 程序自动分析练习并查集…并查集的板子,一看到给出约束条件最后进行判断,就是一个并查集啦(危注意了,这里需要用到离散化,因为数据非常大,离散化就是一个去重的过程,这就是为什么该是黄题结果标的绿题…比如1 2 1、1 2 0表示的是2和1相等,2又和0相等,显然不合理,输出NOx=y的操作类似于并查集加边,x≠y的操作类似于并查集的删边,需要先加边后删边,需要把指令进行一个排序...原创 2021-08-07 19:13:45 · 66 阅读 · 0 评论 -
并查集
并查集对我们来说并不陌生,已经学过了,进行一个复习并查集是一种可以动态维护若干个不重叠的集合,并且支持合并和查询操作的数据结构,他有两种操作:1.查询,查询这个元素属于那个集合2.合并,把两个集合合并成一个集合用于实现这种数据结构,我们通常使用代表元,也就是找一个固定的元素来代表一个集合接下来我们就得来研究归属关系的表示方法,这里可以使用f[x]数组(全称father)来表示x的代表元素,其实并查集就是一个森林之间的操作,f数组也可以表示一个点的父亲,代表元素可以理解成根元素,合并就是将两个森林合原创 2021-05-20 15:44:49 · 94 阅读 · 0 评论