数据结构-并查集
leoxry
天道酬勤,拼搏一个最好的自己送给未来的自己,每天开开心心敲代码就是一种幸福,不计得失,回归刚开始学习时内心的单纯
展开
-
树结构练习——判断给定森林中有多少棵树——并查集思想
Think: 1知识:并查集思想之森林的树 2反思:提高将问题建模到知识体系之中,且要敢于尝试SDUT题目链接以下为Accepted代码——建议参考#include <bits/stdc++.h>using namespace std;bool book[1998];int main(){ int n, m, u, v, cnt; while(scanf("%d %d", &n,原创 2017-07-14 09:13:40 · 551 阅读 · 0 评论 -
【并查集离散化合根】連結 / Connectivity AtCoder - 2159
Think: 1知识点:【并查集离散化合根】 2题意:第1行输入n, k, l,表示图中有n个城市、k对由公路连接的城市、l对由铁路连接的城市,第2行至第k+1行每行输入由公路连接的两个城市(无重复路线),第k+2行至第k+l+1行每行输入由铁路连接的两个城市(无重复路线),题目要求输出对于每个城市与其相连的城市中有多少个城市是既可以通过公路到达也可以通过铁路到达这个城市。 2.1数据范围:原创 2018-01-26 10:55:37 · 430 阅读 · 0 评论 -
I - Navigation Nightmare——带权并查集
Think: 1知识点:带权并查集+向量增移法 2反思:变量初始化位置需要注意,避免重复计算vjudge题目链接建议参考博客以下为Time Limit Exceeded代码——变量重复初始化,导致大量重复运算/* 1.带权并查集 2.向量增移法 */#include <cstdio> #include <cstring> #include <algorithm> #include <cmath>原创 2017-07-23 16:23:10 · 352 阅读 · 0 评论 -
G - Supermarket ——贪心+并查集优化时间复杂度
Think: 1知识点:贪心+并查集优化时间复杂度 2题意分析:给定n个商品的价值和售卖截止时间,每天可售卖一个商品,询问可获得的最大利润 3解题思路:贪心思想取当前时间的最优解,暴力n*n基本超时,进而并查集优化时间复杂度 4反思:独立思考,不要一味依赖解题报告,好的思想和方法可以借鉴,但一定要有自己的思考和创新点,多思考,多反思vjudge题目链接建议参考博客—题意分析以下为Accept原创 2017-07-23 10:10:03 · 989 阅读 · 0 评论 -
L - 小希的迷宫——并查集_环
Think: 1知识点:并查集集合内判断环的存在+并查集判断集合数目 2反思: 1>题目分析基本完备再代码实现,不要急于求成 2>初始思路错误采取新思路应考虑之前思路可以判断的情况当前思路是否可以判断vjudge题目链接参考代码1——并查集集合内判断环的存在 参考代码2——题意条件分析以下为Accepted代码#include <cstdio> #include <cstring> #in原创 2017-07-22 18:08:14 · 407 阅读 · 0 评论 -
D - How Many Answers Are Wrong——种类并查集
Think: 1知识点:种类并查集+后缀和数组 2思考:当学习新的知识点的时候不理解的地方应该动手实现在纸上模拟实现进而提高理解vjudge题目链接可参考博客1(种类并查集) 可参考博客2 可参考博客3以下为Accepted代码#include <cstdio> #include <cstring> #include <algorithm>using namespace std;const原创 2017-07-22 16:59:13 · 331 阅读 · 0 评论 -
C - How Many Tables——并查集
Think: 1知识点:并查集 2反思:并查集初始化操作应注意已知n进而进行初始化vjudge题目链接以下为Accepted代码#include <cstdio> #include <cstring> #include <algorithm>using namespace std;const int N = 1e3 + 4;int n, m, f[N];void Init(); int get_原创 2017-07-22 15:25:00 · 308 阅读 · 0 评论 -
B - The Suspects ——并查集
Think: 1知识点:并查集 2思考:可否过程运行中得到每一个集合的元素数目vjudge题目链接以下为Accepted代码#include <cstdio> #include <cstring> #include <algorithm>using namespace std;const int N = 3e4 + 4;int n, m, f[N];void Init(); int get_f(原创 2017-07-22 15:10:08 · 352 阅读 · 0 评论 -
A - Wireless Network ——并查集
Think: 1知识点:并查集 2题意分析:初始状态已知n台电脑坐标,以及电脑连接的最大距离,进而,2种操作,操作O将电脑u连接到可连接集合,操作S询问电脑u和电脑v是否在同一集合 3解题思路:预处理各台电脑与其它电脑的距离,标记已修复电脑,操作O枚举并通过并查集连接可与电脑u连接的电脑,操作S通过并查集进行判断是否在同一集合 4优化思路:将可连接坐标预处理并通过前向星记录可与当前结点连接的原创 2017-07-22 09:31:10 · 635 阅读 · 0 评论 -
数据结构实验之图论六:村村通公路——最小生成树Kruskal算法
Think: 1知识点:最小生成树Kruskal算法(并查集思想) 2反思:注意变量初始化SDUT题目链接以下为Accepted代码#include <bits/stdc++.h>using namespace std;struct node { int u; int v; int w; }e[1004];int n, f[1004];void Init(); int g原创 2017-07-14 09:49:46 · 1357 阅读 · 0 评论 -
种类并查集学习心得
修正信息备注: 1.【2018-01-29】创作博文基础 2.【2018-01-29】增加样例2.2 一、基本性质 1.在基于并查集的基础上增加记录数组_rank,表示i与其同集合根节点的关系 二、例题讲解 2.1【食物链 POJ - 1182】——vjudge题目链接 题意: 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B, B吃C,C吃A。 现有N原创 2018-01-29 10:03:11 · 1201 阅读 · 0 评论