最小生成树
SC.ldxcaicai
我很菜=_=
展开
-
2018.09.12 earthquake(最优比率生成树)
描述地震已经破坏了农夫约翰所有的农场以及所有连接农场的道路。作为一个意志坚强的人,他决定重建所有的农场。在重建全部N(1 <= N <= 400)个农场之前,首先必须把所有农场用道路连接起来,即任意两个农场之间必须有至少一条通路。 在研究了地图之后,农夫约翰已经得出了结论:M(1 <= M <= 10,000)条双向的道路可以在较短的时间内建造好。由于约翰的资金有限,...原创 2018-09-12 20:58:49 · 315 阅读 · 0 评论 -
2018.09.13 poj2728Desert King(最优比率生成树)
传送门 01分数规划经典题。 不过用krsukal会T掉。 这题用prim反而更快(毕竟是完全图) 因此直接二分+最小生成树搞定。 代码:#include<iostream>#include<cctype>#include<cmath>#include<algorithm>#include<cstring>#i...原创 2018-09-13 20:08:36 · 160 阅读 · 0 评论 -
2018.09.15 bzoj1977:次小生成树 Tree(次小生成树+树剖)
传送门 一道比较综合的好题。 由于是求严格的次小生成树。 我们需要维护一条路径上的最小值和次小值。 其中最小值和次小值不能相同。 由于不喜欢倍增我选择了用树链剖分维护。 代码:#include<bits/stdc++.h>#define N 100005#define M 300005#define lc (p<<1)#define rc (p&...原创 2018-09-15 15:50:17 · 329 阅读 · 0 评论 -
2018.10.26 NOIP模拟 图(最小生成树+线段树合并)
传送门首先最开始说的那个一条路径的权值就是想告诉你两个点之间的贡献就是瓶颈边的权值。那么肯定要用最小生成树算法。于是我考场上想了30min+30min+30min+的树形dpdpdp发现转移是优秀的nlognnlog_nnlogn,总时间复杂度O(n2logn)O(n^2log_n)O(n2logn)妙啊然后有了弃疗的想法。突然想到没有利用kruskalkruskalkruskal...原创 2018-10-26 16:13:32 · 333 阅读 · 3 评论 -
2018.11.02 NOIP模拟 飞越行星带(最小生成树/二分+并查集)
传送门发现题目要求的就是从下到上的瓶颈路。画个图出来发现跟去年noipnoipnoip提高组的奶酪差不多。于是可以二分宽度+并查集检验,或者直接求瓶颈。代码...原创 2018-11-02 16:44:00 · 155 阅读 · 0 评论 -
bzoj2753: [SCOI2012]滑雪与时间胶囊(最小生成树)
传送门最小生成树菜题。题意:给出一些有向边,问有向的最小生成树。思路:先dfsdfsdfs一把所有有用的边都存起来,然后按终点点权为第一关键字,边权为第二关键字给边排序保证最小生成树的合法性,排完之后跑kruskalkruskalkruskal就行了。代码:#include<bits/stdc++.h>#define ri register int#define fi ...原创 2019-01-17 16:57:13 · 1377 阅读 · 0 评论 -
NOIP模拟 迅雷(kruskal/二分+并查集)
传送门题意简述:给一张带权无向图,有a,ba,ba,b两类特殊点和普通点,问使得至少有一个aaa和一个bbb连通所需要的所有边边权最小值的最大值是多少。思路:一眼发现可以二分,考虑怎么checkcheckcheck显然直接把所有大于二分值的并起来看满不满足要求。正准备写的时候想了一个更简单的,把边排个序然后从大到小加进去直到满足题意时就是答案。代码...原创 2019-01-20 14:40:48 · 194 阅读 · 0 评论 -
bzoj2238: Mst(kruskal+树链剖分)
传送门树链剖分菜题。题意简述:给一个无向图,边有边权,每次询问删一条边(对后面的询问无影响)之后的最小生成树。思路:先跑一次kruskalkruskalkruskal并把跑出来的最小生成树给链剖了。然后考虑如果没有删掉树边答案不变,如果删掉一条能够接上的就只有覆盖了这条边的路径,因此对于每条非树边都用来更新一次树边的信息,O(1)O(1)O(1)处理询问即可。注意要转边为点代码:...原创 2019-01-20 23:16:27 · 239 阅读 · 0 评论 -
uoj#14. 【UER #1】DZY Loves Graph(并查集)
传送门题意简述:要求支持以下操作:在a与b之间连一条长度为i的边(i是操作编号);删除当前图中边权最大的k条边;表示撤销第 i−1次操作,保证第1次,第i−1 次不是撤回操作。要求在每次操作后输出当前图的最小生成树边权和。思路:由于边权为当前操作编号因此相当于边是单调加入的,也就是说我们可以直接上kruskalkruskalkruskal的合并方法。关键在于怎么维护这几个操作。加边...原创 2019-01-22 00:36:13 · 234 阅读 · 0 评论