![](https://img-blog.csdnimg.cn/2019090520173579.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
并查集
Ray.C.L
不开longlong见祖宗
展开
-
搭配购买(并查集+01背包)
思路:本质上是个01背包,只不过多了个绑定购买,我们吧所有要绑定购买的看成同一个物品然后做01背包,用并查集维护绑定的块。代码:#include<bits/stdc++.h>using namespace std;const int N=1e4+5;typedef long long ll;int f[N],fa[N];int fnd(int x){ return fa[x]==x?x:fa[x]=fnd(fa[x]);}int n,m,vol;int v[N],w[N.原创 2021-06-02 17:20:29 · 179 阅读 · 0 评论 -
格子游戏(并查集裸题)
思路:在连边之前判断当前两个点是否已经在同一集合里,如果在那么说明连上会成环,我们用并查集去写,根据下图我们可以知道坐标如何变成点的编号//#pragma GCC optimize(2)#include<bits/stdc++.h> using namespace std;typedef long long ll;#define SIS std::ios::sync_with_stdio(false)#define space putchar(' ')#define ent..原创 2020-11-06 22:09:27 · 402 阅读 · 0 评论 -
修改数组(并查集)
思路:我们吧数分成已存在和不存在2个集合,因为我们只需要知道当前数是否存在于集合已经该集合的最大值,那么我们就可以用用并查集去做,我们把已存在集合最大值作为根节点,每次询问的时候直接输出,之后把它接到更大的根节点上,因为可能是1e5个1e6所以fa开大点不然会WA。#pragma GCC optimize(2)#include <cstdio>#include <cstring>#include <algorithm>#include <set>.原创 2020-10-13 11:00:35 · 242 阅读 · 0 评论 -
网络分析(带权并查集)
思路:用带权并查集dis[i]记录i到根节点所需的价值,因为在有些点加权时,还未与其他点相连,故而不会传数据给后来的点,需要val数组记录每个点的值#pragma GCC optimize(2)#include <cstdio>#include <cstring>#include <algorithm>#include <set>#include<iostream>#include<vector>#include&l..原创 2020-10-12 20:41:46 · 172 阅读 · 1 评论 -
牛牛去牛市旅游(并查集+数学)
思路:首先我们看无解的情况,当一个点的度大于等于3或者形成环此时无解(因为每条边只能走一次),然后我们去看有几个联通块,对这n个连通块进行排列组合是n!,之后每个连通块内的点的数量如果大于2那么我们我们就需要选择是从A到B还是从B到A,此时还有乘上2^x(x为点大于1的连通块),我们用并查集去判断是否形成环,和有几个联通块。#include <cstdio>#include <cstring>#include <algorithm>#include <se.原创 2020-07-13 11:37:13 · 343 阅读 · 0 评论 -
加边的无向图(并查集)
思路:加边个数等于连通块个数减一,因为是无向图可以用直接用并查集统计连通块个数。#include <cstdio>#include <cstring>#include <algorithm>#include <set>#include<bits/stdc++.h>using namespace std;typedef long long ll;#define space putchar(' ')#define enter put.原创 2020-06-11 10:49:39 · 319 阅读 · 0 评论 -
食物链(并查集)
思路:我们吧每个动物的三种情况讨论一下,当1是A动物时,2是B,3是C;当1是B动物时,2是C,3是A;当1是C动物时,2是A,3是B;我们用i表示A动物,i+n表示B动物,i+n+n表示C动物,所以当给你x,y的关系时我们只需要判断当前x,y的关系就能判断真假。#include <cstdio>#include <cstring>#include <algorithm>#include <set>#include<bits/std..原创 2020-06-10 18:43:23 · 219 阅读 · 0 评论 -
Parity game POJ - 1733(带权并查集)
Now and then you play the following game with your friend. Your friend writes down a sequence consisting of zeroes and ones. You choose a continuous subsequence (for example the subsequence from the t...原创 2019-08-19 16:24:05 · 171 阅读 · 0 评论 -
How Many Answers Are Wrong HDU - 3038(带权并查集)
题意:给你X-Y区间的和N次询问看有几个错误思路在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中.....但是,这跟这题联系到一起需要一定的抽象,因为我们要判断真假,怎么判断?比较呗,怎么比?跟谁比?比什么?首先解决怎么比,假定我们将当前输入的三个整数 : a, b, v...原创 2019-08-19 15:42:54 · 74 阅读 · 0 评论 -
Supermarket POJ - 1456(并查集)
题意:给你每种商品的价值和他的可存储天数,如果商品在存储天数之前没有卖掉就作废问最大利润。思路可以贪心做,但这是并查集= =。用个结构体存一下价值,天数,给价值降序排序。然后一天数最大的建立并查集。先找价值最大的内个把他当天卖出为K,那么以后碰到同天数但是价值小的就要在最迟在K-1天卖出。代码/*/ \7 ∠_// │ / /│ Z _, < / / `...原创 2019-08-13 19:13:33 · 134 阅读 · 0 评论