并查集
文章平均质量分 50
JA_yichao
这个作者很懒,什么都没留下…
展开
-
YbtOJ 并查集课堂过关 例6 逐个击破【并查集】【贪心】
思路这道题的思路很巧妙。题目给了我们一个图,要我们求最少代价分隔敌人,我们不妨转化一下,假设这个图没有边,求用最大的代价连边使得每个敌人的城市都分别在一个连通块内。这样我们可以用并查集连边。只有两种情况可以连:没有敌人的城市的连通块和有敌人的城市的连通块相连两个没有敌人的城市的连通块相连最后统计答案即可。代码#include<algorithm>#include<iostream>#include<cstdio>using namespa..原创 2021-04-07 17:08:38 · 231 阅读 · 0 评论 -
YbtOJ 并查集课堂过关 例5 超市购物【并查集】【贪心】※
思路我们可以直接先排序贪心,每次选最大的,然后看它的时间是否过期。然后就会超时,发现可以用并查集来优化时间:每次把当前的货给选了之后,其他和他相同时间的货全部都要推到明天再去考虑,所以直接用并查集把和当天选了的货的时间相同的货并到明天的时间里去就行了。代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>using namespace std;in..原创 2021-04-03 17:37:40 · 135 阅读 · 0 评论 -
YbtOJ 并查集课堂过关 例4 食物链【拓展域并查集】※
思路我们可以用拓展域并查集解决这一道题。用x表示同类,用x+n表示天敌,用x+2n表示猎物。如果h=1,那么就判断如果x的天敌是y,或者y的天敌是x,那么就是假话如果h=2,那判断如果x和y是同类或者y的猎物是x的话,那么就是假话。反之,x的同类就是y的天敌,x的天敌就是y的猎物,x的猎物就是y的同类每次并查集就改变三个状态就好了。代码#include<iostream>#include<cstdio>using namespace std;int..原创 2021-04-03 09:13:40 · 153 阅读 · 0 评论 -
YbtOJ 并查集课堂过关 例3 银河英雄传说【并查集】※
思路这道题我们设一个num表示当前序列有多少个战舰,a表示当前战舰前面有多少个战舰,考虑怎样转移:当一列战舰接到另一列尾时,a[x]=num[fy],num[fy]就要加上num[x]。然后考虑怎样转移后面的战舰。并查集时会有个路径压缩,在路径压缩的过程中不断让它的a值(他到他爸爸的距离)加上它爸爸的a值(他爸爸到他爸爸的爸爸的距离)就完成了转移(他到他爷爷的距离)。代码#include<iostream>#include<cstring>#include<..原创 2021-04-02 22:16:01 · 128 阅读 · 0 评论 -
YbtOJ 并查集课堂过关 例2 程序自动分析【并查集】
思路这道题首先很容易得出结论:如果 e=1e=1e=1 就把数加入并查集,如果 e=0e=0e=0 就判断数是否加入并查集。然后很烦的就是数据太大,要离散化,调了我好久。代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace std;int fa[1001000],d[300..原创 2021-04-02 21:29:19 · 144 阅读 · 0 评论 -
YbtOJ 并查集课堂过关 例1 并查集模板【并查集】
思路并查集模板我之前写过,想学习并查集的同学自行查找,这里不再作赘述并查集模板博客代码#include<iostream>#include<cstdio>using namespace std;int f[100100];int n,m,z,x,y;int find(int fa){ if(f[fa]==fa) return fa; return f[fa]=find(f[fa]);}int main(){ cin>>n>&..原创 2021-03-20 16:26:10 · 120 阅读 · 0 评论 -
SSL2342 打击犯罪【并查集】
这道题思路很巧妙。我们先假设所有的犯罪团伙都被打击掉了,那么此时我们重新从 n−>1n->1n−>1 复活犯罪团伙(也就是将它们并在一起)。当我们发现无论怎么并,犯罪团伙的危险程度都>n/2>n/2>n/2时,就停止并操作。此时我们直接输出 iii 即可。( iii 为当前被打击掉的团伙)代码:#include<iostream>#include<cstdio>#include<cmath>using namespa.原创 2020-08-10 08:11:10 · 299 阅读 · 0 评论 -
Lougu P2449 & SSL1222 矩形【并查集】
这道题核心部分就是判断两个封闭图形是否为一个,这里也是最难的部分。先看代码:bool check(int x,int y,int x1,int y_1,int xx,int yy,int x11,int y11){ if(((x1==xx)||(x11==x))&&((y_1==yy)||(y11==y))) return 0; else if(x>x11||xx>x1) return 0; else if(y>y11||yy>y_1) return.原创 2020-07-20 21:57:57 · 125 阅读 · 0 评论 -
Lougu P1546 & SSL1682 最短网络 Agri-Net【并查集】
这道题其实跟 Lougu P2502 & SSL1312 A-B 数对【并查集】 蛮像的相对来说其实这题更简单。先排序,再逐个判断当前边的左端点和右端点是否在一个集合内,不在就合并,同时累加边权,最后直接输出累加结果即可。具体:看代码//无注释#include<algorithm>#include<iostream>#include<cstdio>#include<cmath>using namespace std;int.原创 2020-07-20 21:36:13 · 138 阅读 · 0 评论 -
Lougu P2502 & SSL1312 A-B 数对【并查集】
今天复习了并查集!首先对输入的速度vvv进行结构体排序。不断地合并路径直到起点与终点相连。算出最大最小速度比并不断更新最小。最后分三种情况输出。具体看:代码#include<algorithm>#include<iostream>#include<cstdio>#include<cmath>using namespace std;int h[100010],fa[100010];double minn=2147483647;in.原创 2020-07-20 21:17:35 · 115 阅读 · 0 评论 -
2020.4.11普及C组 Wormhole Sort【纪中】【并查集】
并查集我们首先做并查集的普通操作:把自己当作自己的父亲。其次我们枚举输入的点,如果不是同一个父亲就合并,并记录当前的黑洞的宽度。那怎么实现?//其实这也是一个并查集的基本操作,很容易理解xx=find(b[i].x);yy=find(b[i].y);if(xx!=yy) { f[xx]=yy; ans=b[i].z; }当然,我们还需要一个whilewhil...原创 2020-04-14 21:57:17 · 225 阅读 · 0 评论 -
洛谷 P1551 亲戚【并查集】
这算是一道非常简单的并查集入门题了 (模板题)只需要预处理一下输入的数就好了。无解释#include<iostream>#include<cstdio>using namespace std;int n,m,t,f[10100];int z,x,y;int find(int cha){ if(f[cha]==cha) return cha; re...原创 2020-03-16 20:20:08 · 187 阅读 · 0 评论 -
洛谷 P3367 【模板】并查集
前段时间比较忙,今天终于能抽空来好好学学了并查集在完成合并和查询操作上有着很大的优势查询的理想复杂度是O(nlogn)O(nlogn)O(nlogn)但出现单链的时候会退化到O(n)O(n)O(n)所以我们路径压缩压缩过后的时间复杂度为恒定的O(nlogn)O(nlogn)O(nlogn)甚至更低所以并查集是个好东西#include<iostream>#inclu...原创 2020-03-16 20:07:22 · 168 阅读 · 0 评论 -
2020.2.25普及C组 分数统计(score)【纪中】【并查集】【高精度】
这道题使用高精度+并查集如果不会并查集可以看看这个博客(超赞)CodeCodeCode#include<algorithm>#include<iostream>#include<cstdio>using namespace std;int n,m,x,y,xx,yy,l,maxn,k,x1;int a[20010],f[20010],ans[2...原创 2020-02-27 19:56:57 · 224 阅读 · 0 评论 -
纪中2020.2.25普及C组模拟赛总结
这次考得不好T1比赛的时候就想到了一个简单的暴力方法,后来发现有点小瑕疵,硬着头皮打了下去,样例虽然过了但 0pts0pts0pts !其实正解也是暴力,只是我的脑子没转过弯来。AC CodeAC~CodeAC Code#include<algorithm>#include<iostream>#include<cstdio>...原创 2020-02-26 21:35:36 · 212 阅读 · 0 评论 -
深入浅出系列之——并查集详解【武侠版】【简单有趣】
并查集详解武侠版原创 2020-02-26 21:14:08 · 307 阅读 · 1 评论