摘要:
题目链接:https://www.luogu.com.cn/problem/P1265 最小生成树的prim算法跟dijkstra算法非常像,就是将点分成两个集合,一个是已经在生成树中的点的集合,一个是还未加入生成树的点的集合。最初选择一个点进入集合{V1},然后从{V}-{V1}点集中选择到{V1 阅读全文
摘要:
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1301 将结点的字符信息处理成点信息即可,代码如下: 1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef unsigned int ui; 阅读全文
摘要:
题目链接:https://www.luogu.com.cn/problem/P5057 题目中首先给出一个全零序列,操作有两种,一种是将[l,r]区间的01序列取反,还有一种是单点更新。我们考虑到取反可以让这个位与1求异或,可以用树状数组更新一段,异或运算和加法运算有着很相似的地方,对于加法,我们为 阅读全文
摘要:
题目链接:https://www.luogu.com.cn/problem/P2212 几乎是Kruskal裸题,但是建n*(n-1)条边给我T了俩点,后来我发现只要C(n,2)条边就可以,因为假设(vi,vj)和(vj,vi)之间有边,但是其中一条没用到则另外一条也用不到,因为他们一样长,如果其中 阅读全文
摘要:
题目链接:https://www.luogu.com.cn/problem/list?keyword=1525&page=1 题目给出一些点对之间的权值,要求把点对分到两个集合之中,使得两个集合中的最大边的值最小。我们考虑到将点对分成两个集合可以用并查集的分集合方法得到,1-n表示的是一个集合,n+ 阅读全文
摘要:
题目链接:https://www.luogu.com.cn/problem/P1197 题目给出一些点之间边,然后要摧毁某些结点,问每一次摧毁之后的图的连通分量数量。我们考虑到判连通分量的数量只要扫一遍并查集的根节点就可以,所以考虑用这种数据结构来检查连通分量的数量。其次,并查集中删除结点的消耗是非 阅读全文
摘要:
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1829 并查集的一个应用,就是检测是否存在矛盾,就是两个不该相交的集合有了交集。本题就是这样,一种虫子有两种性别,每次m次操作,每次给出(a,b),如果a和b是同性别就出现了错误,也就是说出现了判断它有两 阅读全文
摘要:
题目链接:http://poj.org/problem?id=1703 这道题和食物链那道题有异曲同工之处,都是要处理不同集合之间的关系,而并查集的功能是维护相同集合之间的关系。这道题中有两个不同的集合,朴素并查集只能查询两者是否属于同一个集合,扩展并查集可以建立多个集合之间的关系。 本题我看了很多 阅读全文
摘要:
题目链接:http://icpc.njust.edu.cn/Problem/Pku/1182/ 题意:给出动物之间的关系,有几种询问方式,问是真话还是假话。 定义三种偏移关系: x->y 偏移量0时 x和y同类 x->y 偏移量1时 x被y吃 x->y 偏移量2时 x吃y 定义 rela[x]=rx 阅读全文