并查集
文章平均质量分 57
Brokenrivers
这个作者很懒,什么都没留下…
展开
-
6159. 删除操作后的最大子段和 并查集
本来是正向的思路,用二分找到删除点所在的区间,然后从set种删除原区间加入断开的两个区间和。不过有点麻烦,时间不够就没写出来。但是这题逆向的思考,用并查集每次添加一个集合,同时判断这个数有没有相邻集合,有就合并。原创 2022-08-21 19:40:10 · 160 阅读 · 0 评论 -
P2661 [NOIP2015 提高组] 信息传递 并查集/最小环
P2661 [NOIP2015 提高组] 信息传递 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目是求最小的环,同时注意每一轮不能直接合并,必须等该轮结束再合并。有环则取最小值。 #include<bits/stdc++.h> #pragma warning (disable:4996); #define ll long long #define int ll #define mem(a,b) memset(a,b,sizeof(a)) using na..原创 2022-05-16 12:27:16 · 243 阅读 · 0 评论 -
P1991 无线通讯网 并查集/最小生成树
P1991 无线通讯网 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目其实不难,数据也很水。主要也是套最小生成树的模板,但是这题也算是个变式了,思考和处理边的思路还是很有价值的。 题目说的很复杂,其实就是有p个顶点,每个顶点可以和自身半径D以内的顶点相互链接,同时还可以选出其中的s个顶点对他们标记,标记的两个顶点可以相互链接。求使所有顶点相连的最小半径D是读多少。 思路:我们可以先不管标记的事,就求出要把所有顶点连起来D最小应该是多少,这个很简单每条边的权就是距离,这也就.原创 2022-05-15 18:07:14 · 175 阅读 · 0 评论 -
P1455 搭配购买 并查集/动态规划
因为每个物品之间相互联系,所以不能直接用上动态规划,但是我们可以用并查集将所有相关点链接合成为一整条边,也就是看作一个大的物品,然后这题就变成了一个01背包问题。 对于两个相连的物品如果不是一个集合的就合并,合并同时在父节点上加上所有子节点的消耗和价值。 //#include<bits/std c++.h> #include <iostream> #include<ctime> #include<math.h> #include<string&..原创 2022-05-13 20:57:52 · 295 阅读 · 0 评论 -
5.8 训练周记 图存储/并查集/拓扑排序小结
这两周主要学习了图论的基本存储方式,拓扑排序和并查集。但因时间原因还有一些不太清楚的地方。 一.图的存储 要对图进行操作,我们首先得有张图。 目前学习的对图的存储方式: 1.邻接矩阵 2.邻接表 两种方式各有优劣。 总体上来看,邻接矩阵相对简单,对得到一条边的两个顶点,判断其为有无方向,然后两顶点按情况标记即可 cin >> a >> b; if (gra[a][b] == 0) { gra[a][b] = 1;//有向边原创 2022-05-08 23:27:14 · 608 阅读 · 0 评论 -
普通并查集练习
P1551 亲戚 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)并查集模板 模板: #include<iostream> using namespace std; const int N = 1e4; int pre[N];//每个下标节点的前驱节点 void init(int n) {//初始化 for (int j = 0; j < n; j++) { pre[j] = j; } } int find(int x) {/..原创 2022-05-08 12:25:00 · 635 阅读 · 0 评论 -
ZOJ 3261 Connections in Galaxy War 逆向并查集/删边
ZOJ3261 题意:给出n个顶点,每个顶点有对应的能量值,再给出m个顶点对表示初始图的联通情况。 最后给出Q个条件,query表示 查询某个顶点所在集合中能量最大的顶点编号(如果最大能量的顶点有相同则输出序号最小的)。destroy+顶点对表示删除该顶点之间的联通。 思路: 并查集做不到合并完然后删边,所以想到先得到查询数据然后根据删的边逆向并查集,每次删的边变为加上该边,就可以使用合并操作了。既然是逆向离线处理,所以创建初始图的时候如果该边会被删除就不要加入初始图里。 最后是合并操作,题目要.原创 2022-05-07 17:31:26 · 339 阅读 · 0 评论