![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
最小生成树
zxyoi_dreamer
退役了退役了爬了爬了,搞个锤子算法竞赛,不如好好享受大学生活。
展开
-
【SGU383】Caravans(Delaunay三角剖分)(瓶颈路)
数据较强,可以用于模板查错原创 2020-01-17 17:01:44 · 355 阅读 · 0 评论 -
【校内模拟】祝著节(树上倍增)(最小生成树)
简要题意:给一张连通无向图,每条边有边权。你需要把边分成两个集合。定义一个合法的生成树为分别包含两个集合中至少一条边的树。请问你有多少种划分方式,使得最小的合法生成树边权和为XXX题解:首先手玩+感性理解+理性证明可以知道满足条件的最小生成树与真实最小生成树最多相差一条边。设真实最小生成树边权之和为sumsumsum。当sum>Xsum>Xsum>X,显然无解。...原创 2019-11-05 21:06:46 · 135 阅读 · 0 评论 -
【SDOI2019】世界地图(虚树)(最小生成树)
传送门SD队长说这道题是送分的。。。于是SD省选现场就只有他A了这道题题解:有很多题解用了Kruskal重构树,在下表示不解。其实这道题还是难在实现上面,先来说一下思路。由于给出的禁用区间不会越过背面(即m→1m\rightarrow 1m→1的边),所以可以考虑先处理出前后缀的最小生成树,再考虑加上翻过背面的边进行拼接。其实也就是说给两棵最小生成树和这两棵树之间的一些边,求新的最...原创 2019-10-25 10:12:01 · 253 阅读 · 0 评论 -
2019.01.20【校内模拟】Thunder(Kruskal)(带权并查集)
传送门解析:水题啊,带全并查集维护一下当前连通块内有没有两种点就行了。然后Kruskal的思想,对边排序,倒序搞就行了。代码:#include<bits/stdc++.h>using namespace std;#define ll long long#define re register#define gc get_char#define pc putchar...原创 2019-01-20 15:06:27 · 227 阅读 · 0 评论 -
2018.01.03【CodeForces888G】Xor-MST(最小xor生成树)(01TRIE)
传送门解析:随手一写就CF速度rk1了啊。。。思路:好像是说有一个叫什么Borůvka算法的东西。没学过,不过好像我yy的这种解法就是优化过的Borůvka。。。朴素的Borůvka简要说明:1.用数组记录每个子树的最近邻居。(类似Prim)2.对于每一条边进行处理(类似Kruskal)如果这条边连成的两个顶点同属于一个集合,则不处理,否则检测这条边连接的两个子树,如果是连接这...原创 2019-01-03 09:10:49 · 242 阅读 · 0 评论 -
2018.11.02【校内模拟】飞越行星带(最小生成树)
传送门解析:最小生成树的优秀做法。建图很妙啊,把所有点对之间建立距离为权值的边,然后所有点向顶部连权值为距离的边,向底部连权值为L−yL-yL−y的边,然后求一个最小生成树,将顶部和底部连在一起的边的权值就是答案。我解释一下为什么这样做是对的。考虑我们现在有一艘直径为当前枚举边的飞碟,我们禁止它通过这条边,如果它还可以飞到另一端,说明它穿过了一些权值大于它的直径的边,那么它的直径可以继...原创 2018-11-02 16:53:48 · 147 阅读 · 0 评论 -
2010.10.30【NOIP2013】【洛谷P1967】货车运输(Kruskal重构树)
传送门解析:KruskalKruskalKruskal重构树裸题。考虑在用KruskalKruskalKruskal建立图的最小生成树的时候,由于边是从小到大枚举的,所以每次连接两个连通块的边的边权就是两个连通块中的点之间路径上最大值的最小值。那么这道题反过来求最大生成树也就做完了。关于KruskalKruskalKruskal重构树的建法。考虑有同学并没有做过NOI2018D1T1...原创 2018-10-31 08:06:43 · 136 阅读 · 0 评论 -
2018.10.19【BZOJ4973】比特战争(最小生成树)
传送门解析:又是一道思维题。。。码量巨少。。。其实拿到题目还想了想瓶颈路,但最后就是没有推出来最小生成树的结论。。。好吧真是一道神题。。。思路:最优的方案一定是最小生成树构建过程中的某个图。将这个图中的边全部打通就是最优的方案。其实证明还是有点巧妙。首先如果我们已经求出了一个连通块需要被打通,那么打通这个连通块的代价是max{max{a},max{c}}×min{b}max\{m...原创 2018-10-19 18:30:47 · 390 阅读 · 0 评论 -
2018.10.16【校内模拟】华莱士(Kruskal)(环套树)
解析:由于简单的以为每个极大联通子图做一个最小环套树就行了,写了只与正解差几行的KruskalKruskalKruskal求最小环套树,直接50pts50pts50pts滚粗了。然而我们要求的是环套树森林,一个极大联通子图可能生成多个环套树。于是PrimPrimPrim就没法做了。我们只能考虑KruskalKruskalKruskal,同时在并查集的根节点上维护当前的联通块是简单树还是环套树...原创 2018-10-16 15:58:28 · 340 阅读 · 0 评论 -
2018.10.07【NOI2014】【BZOJ3669】【洛谷P2387】魔法森林(LCT)(最小生成树求瓶颈路)
BZOJ传送门洛谷传送门解析:这道题是经典的LCTLCTLCT在线求最小生成树的应用。思路:直接做显然很麻烦,就算你知道怎么求瓶颈路也很麻烦,因为这是要求两个最大值的和最小,没有办法直接贪心。那么我们换一个思路,先确定aaa最大值,然后再考虑在这个最大值下我们能够获得的尽可能小的路径上最大的bbb。那么我们需要将所有边以aaa为第一关键字从小到大排序,然后做出在限制aaa的最大值的...原创 2018-10-07 22:47:54 · 152 阅读 · 0 评论 -
【模板】LCT求最小生成树
参考题目:洛谷P3366解析:联赛完后统一更模板题解析。代码:#include<bits/stdc++.h>using namespace std;#define ll long long#define re register#define gc getchar#define pc putchar#define cs constinlineint geti...原创 2018-10-07 20:15:11 · 371 阅读 · 0 评论 -
2018.09.22【JSOI2008】【BZOJ1016】最小生成树计数(矩阵树定理)(并查集)
传送门解析:好的这是一道需要数学推理的矩阵树题目。是的,我们还会用到并查集,就像KruskalKruskalKruskal一样。首先我们考虑一个问题。前置定理我们先随便做一棵最小生成树。重要定理:那么在这棵生成树中如果权值为www的边有ttt条,那么在所有最小生成树中,权值为www的边都有kkk条。证明如下:考虑在这棵生成树中断掉一条权值为www的边,使其分为两个联通分量。再次...原创 2018-09-22 16:10:51 · 255 阅读 · 2 评论 -
2018.09.25【BZOJ2654】Tree (最小生成树)(二分法)
传送门解析:乍一看完全没思路的一道题。搜索?显然不行。。。然而,看出正解的我无f**k说。。。思路:考虑怎么调整白边的个数。在做最小生成树的时候。我们可以通过给白边全部加上或减去一个权值来搞定。加上一个数,可以使白边在生成树里面的条数减少。加少一点,就会使白边在生成树里面的条数增加。这个是很显然的。并且是对白色边的条数影响是具有单调性的。但是问题就来了,怎么知道我们这样做是...原创 2018-09-25 18:55:36 · 161 阅读 · 0 评论