
并查集
文章平均质量分 96
Loi_LXTT
这个作者很懒,什么都没留下…
展开
-
【noip 2010】关押罪犯
去题面的传送门Solution 1:并查集QAQ之前做过并的查集做法。 按权值排序,优先把大权值的分开 对于一个节点a,a+n表示和它不在一个监狱里 代码:#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<cstdlib>#include<algorithm>using namesp原创 2017-10-21 07:52:34 · 280 阅读 · 0 评论 -
<并查集>luogu 1196 银河英雄传说
去题面的传送门 第一反应是并查集维护战舰之间的集合关系,记录每一个战舰前面的战舰数量pre[i],记录每一个并查集的集合大小rank[i],每次合并更新pre的大小,查询时如果两艘战舰在不同的集合里,直接return -1。反之,返回两艘战舰的pre之差-1,就是两艘战舰之间的战舰数量 但是对于如何维护pre,我调试了很久。 一开始想的是,每次合并时,把排列在后面的那个集合的根节点的pre+前原创 2017-10-27 16:58:59 · 288 阅读 · 0 评论 -
<(扩展域/加权)并查集>NOI 2001 食物链
可提交的传送门题目描述 Description动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形。A吃B,B吃C,C吃A。 现有N个动物,以1-N编号。每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。 有人用两种说法对这N个动物所构成的食物链关系进行描述: 第一种说法是“1 X Y”,表示X和Y是同类。 第二种说法是“2 X Y”,原创 2017-10-27 09:21:43 · 410 阅读 · 0 评论 -
<并查集>luogu 1197 星球大战
去题面的传送门记得之前做过一个跟这个题很类似的。那道题是每次删一条边,问联通块的个数。正解就是离线处理,然后倒序加边,用并查集维护。而这道题是删点,同样想到离线处理然后倒序加点,唯一的不同是这道题要把这个点连接的所有边都for一遍。。。 话不多说,上代码:#include<iostream>#include<cstdio>#include<cstring>#include<algorith原创 2017-10-14 19:14:41 · 360 阅读 · 0 评论 -
<并查集+脑洞>codevs 1995 黑魔法师之门
去题面的传送门第一眼觉得这题很难。。。然后在手推样例时,发现每在一个连通块里加一条边,对答案的贡献就是原图的答案+1.也就是答案变为原来的两倍加一。一开始只是观察样例是这样的。后来发现这个题的确是这样。 为什么呢? (前提,加入的边的两节点都已经在连通块里) ①这两个节点本来就有边连接。相当等于用这条边替换其他的边。 ②这两个节点本来没有边连接。相当等于增加了一个强连通分量 每次答案输出原创 2017-10-14 21:45:07 · 515 阅读 · 0 评论 -
【队内胡策 11.1】 T3
考试的时候打了八十分暴力QAQ虽然八十分过了,但是算法有bug。。数据没有卡我算法,然后就水过了8个点。。害怕。 正解: 二分+并查集 二分前mid个是否有矛盾的,特判一下全部符合的,答案为n+1 验证答案时,用并查集维护。 首先,如果已知一段区间[a,b]的最小值为x1,再出现一组猜测:[c,d]的最小值为x2。 ① 若x1 > x2且区间[c,d] 包含在[a,b]里,则自相矛盾。原创 2017-11-01 20:01:55 · 361 阅读 · 0 评论