总结一下我理解的带权并查集 与普通并查集的区别:普通的并查集仅仅记录的是集合的关系,这个关系无非是同属一个集合或者是不在一个集合,而带权并查集是记录集合内元素的关系,而这个关系被带上了一个权值表示集合内元素之间关系的区别,例如食物链这道题,权值为0表示和根节点是同类,权值为1表示吃根节点。。。 用向 ...
分类:
其他好文 时间:
2020-02-10 22:11:12
阅读次数:
87
例题一链接: http://acm.hdu.edu.cn/showproblem.php?pid=3038 题意: 数据范围: $1\leq n \leq 100$ 分析: AC代码: #include<bits/stdc++.h> #define ll long long #define pii ...
分类:
其他好文 时间:
2020-02-10 13:47:14
阅读次数:
82
1.A/B?() 题目链接: Problem Description 正整数A是否能被正整数B整除,不知道为什么xhd会研究这个问题,来帮帮他吧。 Input 输入数据的第一行是一个数据T,表示有T组数据。每组数据有两个正整数A和B(A,B<10^9)。 Output 对于每组输入数据,输出"YES ...
分类:
其他好文 时间:
2020-02-09 22:09:42
阅读次数:
64
#include<iostream> #include<algorithm> #include<cstring> #include<cstdio> using namespace std; typedef long long ll; const int N=1e5+10; int a[N]; int ...
分类:
编程语言 时间:
2020-02-09 20:45:45
阅读次数:
68
//每个数字只会被它后面的比它小的数字影响,且会向右移动相应个数的位置 //比如:6 4 3 5 2 1 。4后面比它小的有 三个,因此它的最右边位置就是当前位置 +3,即5 //如果该数字本身在标准位置左边,那无须考虑,初始位置就是最左端 //如果它在标准位置右边,我们可以知道,它最终肯定要回到标 ...
分类:
编程语言 时间:
2020-02-09 20:17:01
阅读次数:
69
题意: 给你m对矛盾关系,每对关系分别涉及到x,y两人,矛盾值为w 请你判断分配x和y到两个集合中,能否避免冲突 如能避免请输出0,如果冲突不可避免,请输出最小的矛盾值 思路: 方法①:并查集 并查集能维护连通性、传递性,通俗地说,亲戚的亲戚是亲戚。 我们不妨这样想:两个人a,b有仇,那么把他们放在 ...
分类:
其他好文 时间:
2020-02-09 18:51:32
阅读次数:
91
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 515227 Accepted Submission(s): 98635 Problem Desc ...
分类:
其他好文 时间:
2020-02-09 16:43:31
阅读次数:
61
紫书讲到了这,就顺便学了下欧拉图,发现自己菜如依旧。。 题源:https://www.luogu.com.cn/problem/P1341 首先是要判断是否存在欧拉路,需要满足两个条件,一个是连通性,另一个是奇点的个数。连通性看大佬都是用并查集做的,最后判断只有一个父节点即可。 然后就是用Hierh ...
分类:
其他好文 时间:
2020-02-09 13:14:07
阅读次数:
116
并查集是常见而且好用的一种数据结构。原因在于代码简练而且方便维护各种额外信息。带权并查集就是并查集的一种应用方式。原理其实就是普通并查集额外维护了一个结点的权数组。 例题: 本题的关系有三层 -> a -> b -> c -> ,但不同的是本题的关系是有向的,也就是说a和b如果是敌对关系,那么b和a ...
分类:
其他好文 时间:
2020-02-08 16:01:11
阅读次数:
248
数据的交换输出 题目分析: 找到最小值,然后与第一个换位置 代码: #include<iostream> using namespace std; int main() { int n; int a[101]; while (cin >> n&&n) { int i,t, min = 99999; ...
分类:
其他好文 时间:
2020-02-08 10:15:34
阅读次数:
74