首页 > TAG信息列表 > findSet

并查集笔记

代码实现:通过路径压缩把某类节点统统并入根节点,类似于冠状病毒(? 首先把每个节点的父节点设置为他们自己 find函数以及修改父节点代码实现 int findset(int n){ return fa[n]==n?n:fa[n]=findset(fa[n]); } 并查集父节点查询与融合操作 int fx=findset(x),fy=findset(y);

【笔记】并查集---无向图处理代码模板及类型题

在个人博客查看本文 并查集要处理的两个问题 查询 查询图中两个顶点是否在同一个集合之中。 合并 将两个不相交的集合进行合并。 设计并查集的两种思想 基于id 给每个顶点分配一个唯一的标识,称为 id id 不同则来自不同的集合。 合并时需要将其中一个集合中的所有元素的 id

并查集模板

// 并查集模板 class UnionFind { public: vector<int> parent; vector<int> size; int n; // 当前连通分量数目 int setCount; public: UnionFind(int _n): n(_n), setCount(_n), parent(_n), size(_n, 1) { iota(parent.begin(), parent.

CSP2019树上的数

我没有话说 Code: #include<bits/stdc++.h> using namespace std; char buf[1<<20],*p1,*p2; #define GC (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<20,stdin),p1==p2)?0:*p1++) //#define GC getchar() template<class T> inline void read(T &n

[DarkBZOJ3754] Tree之最小方差树

前言 感觉如果不讲做法应该要想上好一会,甚至可能做不出来。 题目 DarkBZOJ 讲解 拿到这道题很有可能没什么思路,我们就从暴力入手。 先把标准差的公式写出来: \[\sqrt{\frac{\sum_{0\le i<n}(a_i-\overline{a})^2}{n}} \]对于这道题,显然我们知道生成树是 \(n-1\) 条边,而且外面的根号

839. 相似字符串组

如果交换字符串 X 中的两个不同位置的字母,使得它和字符串 Y 相等,那么称 X 和 Y 两个字符串相似。如果这两个字符串本身是相等的,那它们也是相似的。 例如,“tars” 和 “rats” 是相似的 (交换 0 与 2 的位置); “rats” 和 “arts” 也是相似的,但是 “star” 不与 “tars”,“ra

CF593D Happy Tree Party

前言 由于之前没有写过这类博客,特地补一篇 题目 洛谷 CF 讲解 如果你做过这道题: 上帝造题的七分钟2 / 花神游历各国(洛谷) 那么可能对你做这道题有帮助 我们发现,对于询问,如果除数不等于\(1\),那么在log级别的次数内,\(y_i\)即可被除为\(0\) 有了这个发现,我们就很容易求得答案 对于

X-Plosives UVA - 1160----并查集+思维

A secret service developed a new kind of explosive that attain its volatile property only when a specific association of products occurs. Each product is a mix of two different simple compounds, to which we call a binding pair. If N > 2, then mixing N

CSU 2125

https://blog.csdn.net/qq_36258516/article/details/80500815 Description 小Z高中的时候特别喜欢生物,在一次做实验的过程中,小Z配置了n个培养皿,每个培养皿中有着若干种类的细菌,但由于实验室的培养皿数量有限,老师要求小Z尽可能少地使用培养皿。为此,小Z只得将一些培养皿进行混合,

流浪星球

目录   题目描述 输入 输出 样例输入 样例输出 解析 优化 代码思考 代码 题目描述 输入 一个整数n。 输出 输出一个整数,表示最大收益 样例输入 输入样例1: 6 输入样例2: 73 样例输出 输出样例1: 9 输出样例2: 1000 解析 显然,这是一道生成树的题。 进一步来讲,题目是求“最大