![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并查集
_WAWA鱼_
郑州大学退役ACMer,已签约小米浏览器内核开发,曾在科大讯飞实习做大模型SDK,努力成长中,欢迎大家一起学习和交流~
展开
-
leetcode 2157. 字符串分组---状态压缩+并查集
题目链接class Solution {public: map<int,int>p,cnt; int groups,maxv; int find(int x) { if(p[x]!=x)p[x]=find(p[x]); return p[x]; } void merge(int x,int y) { if(!p.count(y))return ; x=find(x)原创 2022-02-19 21:59:15 · 242 阅读 · 0 评论 -
字符串归类---并查集/图论+dfs
并查集写法#include <iostream>#include <cstring>#include <algorithm>using namespace std;typedef pair<int, int> PII;const int N = 200010;int cnt[N],p[N];int n;int find(int x){ if(p[x]!=x)p[x]=find(p[x]); return p[x];}.原创 2022-02-19 21:31:59 · 130 阅读 · 0 评论 -
C. Prefix Enlightenment---扩展域并查集+分析(难)
题目链接全题最关键的地方就是任意三个子集交集为空,说明同一个地方最多出现在两个区间中直接分类讨论,对区间编号进行并查集操作,记录联通集中区间个数i为选择i集合,令i+base为不选择i集合如果s的一个位置s[i]在区间集合a中只出现一次s[i]=0,必选这个区间,a+base和0连接s[i]=1, 不选 ,a和0连接这里的0取巧操作,直接将0的区间数量置为INF,这样,代表必然不选这个区间如果出现在两个集合中,a,bs[i]=0,两个区间选一个a和b+base a+base和bs.原创 2022-02-09 17:05:14 · 237 阅读 · 0 评论 -
D. Maximum Distance---并查集+最小生成树
这个题真难读懂啥意思题意:有自环,有重边的无向图,有k个特殊点,一条路径的距离是这条路上边权的最大值,求每个特殊点到其它特殊点小路径中的最大值可以用最小生成树来写#include <iostream>#include <cstring>#include <algorithm>#include <vector>#include <map>#include <cmath>using namespace std;#de.原创 2022-02-09 14:14:04 · 369 阅读 · 0 评论 -
小C的周末----并查集+二维map+思维
题目链接算是比较奇怪的并查集了#include<iostream>#include<cstring>#include<algorithm>#include<vector>#include<map>using namespace std;//#define int long longconst int N = 100010;int p[N];map<int,int>mp[N];int n,m,q;int vi原创 2022-01-08 12:05:48 · 274 阅读 · 0 评论 -
[USACO 2011 Ope S]Learning Languages----简单并查集
题目链接#include <iostream>#include <cstring>#include <algorithm>using namespace std;const int N = 40050,base=10010;int p[N];int n,m;int find(int x){ if(p[x]!=x)p[x]=find(p[x]); return p[x];}int main(){ cin>>原创 2022-01-08 11:29:04 · 287 阅读 · 0 评论 -
奇偶游戏-----带权并查集+扩展域并查集
#include <iostream>#include <cstring>#include <algorithm>#include <unordered_map>using namespace std;const int N = 10010;int n=0,m;int p[N],d[N];unordered_map<int,int>S;int get(int x){ if(!S.count(x)) {原创 2021-11-15 23:19:28 · 1428 阅读 · 0 评论