
并查集
会划水才能到达彼岸
ACM-ICPC 现役(铜牌) 目前:Codeforces Rating: 2172
展开
-
kuangbin 并查集 - HDU - 1213 How Many Tables(并查集简单题)
kuangbin 并查集 - HDU - 1213 How Many Tables(并查集简单题)小明今天请吃饭. 他邀请了很多朋友。现在该吃饭了。小明想知道她至少需要多少张桌子。但是不是所有的人都互相认识,所有的人都不想和陌生人坐在一起。但是如果A认识B, B认识C,那A, B, C就假装认识,所以他们就可以在一张桌子上吃饭。如果A知道B, B知道C, D知道E,那么A、B、C可以留在一起,而D、E必须在另一张桌子吃饭。至少需要两张桌子。Input输入以一个整数T(1<=T<=25原创 2020-10-06 16:08:31 · 337 阅读 · 0 评论 -
week2 [kuangbin带你飞] 题单 最短路问题 + 并查集问题
week2 kuangbin 题单 最短路问题 + 并查集问题并查集最短路并查集1.kuangbin 并查集 - POJ - 2236 Wireless Network (并查集简单题)2.kuangbin 并查集 - POJ - 1611 The Suspects (并查集模板题)3.kuangbin 并查集 - POJ - 1182 食物链4.kuangbin 并查集 - POJ - 1733 Parity game (带权并查集 + 离散化)最短路1.kuangbin 最短路专题 -原创 2020-10-04 21:53:56 · 2015 阅读 · 0 评论 -
kuangbin 并查集 - POJ - 1733 Parity game (带权并查集 + 离散化)
题意: 套利是利用货币汇率的差异进行的货币转换,例如用1美元购买0.5英镑,1英镑可以购买10法郎,一法郎可以购买0.21美元,所以0.5 × 10 × 0.21 = 1.05,从中获利百分之五,所以需要编写一个程序,在进行完转换之后能不能获利,如果能就输出Yes,反之No;...原创 2020-10-04 21:47:51 · 200 阅读 · 0 评论 -
kuangbin 并查集 - POJ - 2236 Wireless Network (并查集简单题)
kuangbin 并查集 - POJ - 2236 Wireless Network (并查集简单题)题意: 有一个计算机网络的所有线路都坏了,网络中有n台计算机,现在你可以做两种操作,修理(O)和检测两台计算机是否连通(S),只有修理好的计算机才能连通。连通有个规则,两台计算机的距离不能超过给定的最大距离D(一开始会给你n台计算机的坐标)。检测的时候输出两台计算机是否能连通。题解: (详情请看代码~~~ ,代码注释写的真的很详细了。)对并查集不太了解原理的可以看看:https://blog.c原创 2020-10-03 14:16:47 · 205 阅读 · 0 评论 -
kuangbin 并查集 - POJ - 1182 食物链
kuangbin 并查集 - POJ - 1182 食物链 (并查集模板题)传送门 Click here ~~题解:当op 等于 1的时候(真话x和y是同类):如果x的祖宗节点等于y的祖宗节点且(dis[x]-dis[y]) % 3!=0的时候如果 xx ≠ yy,合并x和y的集合。因为合并x和y所在集合多出了一段长度,这块长度是find(x)到find(y)的距离,所以求多出来的这块部分的长度。当x和y是同类时,有这样的特性(dis[x] + dis[find[x]] - dis[y])原创 2020-09-29 21:57:57 · 171 阅读 · 0 评论 -
kuangbin 并查集 - POJ - 1611 The Suspects (并查集模板题)
kuangbin 并查集 - POJ - 1611 The Suspects (并查集模板题)传送门 Click here ~~题意:小明被确诊了非典病毒,小明必须被隔离治疗,并且与他直接或间接接触者都要隔离观察。同一个社团内如果有人感染病毒或可能感染病毒,那么这个社团内所有人都被认为是可能已经感染了病毒,由于时间紧迫,需要尽快找到所有可能携带病毒的同学并隔离,以防止更大范围的病毒扩散,院长请你帮忙编写程序计算需要隔离多少人。题解:模板题。Click here ~~~ 可以看一下这个并查集模板原创 2020-09-29 20:27:58 · 202 阅读 · 0 评论 -
数据结构 —— 并查集(笔记及裸题)
并查集代码短但是特别精巧。将两个集合合并询问两个元素是否在一个集合当中(并查集的时间复杂度近乎O(1) )基本原理:每一个集合用一颗树来表示。树根的编号就是整个集合的编号。每个节点存储它的父节点,p[x]表示x的父节点问题1:如何判断树根?如果是树根的话 → if(p[x] == x) ,除了根节点之外p[x] ≠ x问题2:如何求x的集合编号?while(p[x] != x) x = p[x];只要x不是树根,就一直往上走。其实就是解决第二点,询问两个元素是否在一个集合当中,分别原创 2020-09-29 11:05:04 · 295 阅读 · 0 评论