随笔分类 - 最小生成树
摘要:题目链接:https://www.luogu.org/problemnew/show/P1783 先把题目改造一下:题目所求是要一条能从0列到n列的路径,使其路径上的最大边长一半最小。 为什么是一半呢? 考虑半径这个东西,假如两个点之间距离为d,半径分别为r1,r2。需满足r1 + r2 = d 若
阅读全文
摘要:题目链接:https://www.luogu.org/problemnew/show/P4180 这个题卡树剖。记得开O2。 这个题inf要到1e18。 定理:次小生成树和最小生成树差距只有在一条边上 非严格次小生成树:枚举每一条不在最小生成树上的边,加入到最小生成树中构成一个环。删去这个环上的最大
阅读全文
摘要:include include include include using namespace std; const int maxn = 505000; int n, m, dis[maxn], vis[maxn], ans; struct edge{ int from, to, next, le
阅读全文
摘要:题目链接:https://www.luogu.org/problemnew/show/P3623 说是对克鲁斯卡尔的透彻性理解 正解: 先考虑加入水泥路,然后再考虑加入剩下必须要加入的最少鹅卵石路。 之后对原图再跑最小生成树 先跑鹅卵石路到k条。 再从所有水泥路中直到成为最小生成树。 include
阅读全文
摘要:题目链接:https://www.luogu.org/problemnew/show/P1195 嗯~我是被题目背景吸引到才做的,想吃棉花糖啦! 话说回来,这道题其实很容易就能想明白,k棵最小生成树。 我们用kruskal的思想,每次连接最小代价的边。假设一开始有n棵树,那么我们每次连接两朵云彩就会
阅读全文
摘要:这里是kruskal做法 当然prim也可以,至于prim和kruskal的比较: Prim在稠密图中比Kruskal优,Kruskal在稀疏图中比Prim优。
阅读全文

浙公网安备 33010602011771号