随笔分类 -  最小生成树

摘要:[题目链接] https://www.luogu.org/problemnew/show/P4899 [算法] 建出原图的最小/最大生成树的kruskal重构树然后二维数点 时间复杂度 : O((N+Q)logN) [代码] 阅读全文
posted @ 2019-02-13 23:02 evenbao 阅读(193) 评论(0) 推荐(0)
摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=3551 [算法] 建出此图的kruskal重构树 用线段树合并维护每个联通块的第k大点权 这样就可以在线回答询问了 时间复杂度 : O((N + Q)log N) [代码] 阅读全文
posted @ 2019-02-13 22:53 evenbao 阅读(273) 评论(0) 推荐(0)
摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=5415 [算法] 对于v到1的1条合法路径 , 我们将其分为两段考虑 1. v -> u , 该路径上的最短边长大于等于P 2. u -> 1 显然 , 我们要求所有这样的路径中dist 阅读全文
posted @ 2019-02-13 22:47 evenbao 阅读(293) 评论(0) 推荐(0)
摘要:Problem A. Two distinct points [题解] 显然 , 当l1不等于r2时 , (l1 , r2)是一组解 否则 , (l1 , l2)是一组合法的解 时间复杂度 : O(1) [代码] Problem B. Divisors of Two Integers [题解] 首先 阅读全文
posted @ 2019-01-24 20:55 evenbao 阅读(198) 评论(0) 推荐(0)
摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=3669 [算法] 首先离线 , 将边按A值从小到大排序 然后用LCT动态维护以B值为关键字的最小生成树即可 时间复杂度 : O(NlogN ^ 2) [代码] 阅读全文
posted @ 2018-12-21 22:26 evenbao 阅读(300) 评论(0) 推荐(0)
摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=2594 [算法] 首先离线 , 将删边操作转化为倒序加边 假设我们已经维护出了一棵最小生成树T , 若加入了一条边(u , v , w) , 那么形成了一个环 ,考虑kruskal算法的 阅读全文
posted @ 2018-12-19 22:04 evenbao 阅读(256) 评论(0) 推荐(0)
摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=2654 [算法] 给白色边都加上一个值,会使得最小生成树上的白边数量减少,不妨二分给白色边加上的值 , 检验答案时用Kruskal求最小生成树即可 时间复杂度 : O(NlogN) [代 阅读全文
posted @ 2018-10-30 18:50 evenbao 阅读(171) 评论(0) 推荐(0)
摘要:[题目链接] https://www.luogu.org/problemnew/show/P1967 [算法] 可以证明答案一定为最大生成树上两点路径中的最小值 树上倍增即可 时间复杂度 : O((N + Q) log N)[代码] 阅读全文
posted @ 2018-08-12 17:34 evenbao 阅读(111) 评论(0) 推荐(0)
摘要:[题目链接] http://poj.org/problem?id=2728 [算法] 0/1分数规划 + 最小生成树[代码] 在本题中,prim算法的时间复杂度优于kruskal算法,且实现较为容易,因此,笔者程序中使用的是prim算法 阅读全文
posted @ 2018-07-27 15:56 evenbao 阅读(146) 评论(0) 推荐(0)
摘要:[题目链接] http://poj.org/problem?id=1639 [算法] 首先,我们可以用深度优先遍历求出1号节点去除后有几个联通块 设共有T个联通块,若T > K则无解,否则 : 求出这些联通块的最小生成树,得到一棵最小T度生成树,我们尝试改动(K - T)条边,使得答案变得更小,具体 阅读全文
posted @ 2018-07-27 15:00 evenbao 阅读(178) 评论(0) 推荐(0)
摘要:【题目链接】 https://www.lydsy.com/JudgeOnline/problem.php?id=1601 【算法】 最小生成树 【代码】 阅读全文
posted @ 2018-07-01 16:26 evenbao 阅读(128) 评论(0) 推荐(0)
摘要:【题目链接】 点击打开链接 【算法】 先求出图的最小生成树 枚举不在最小生成树上的边,若加入这条边,则形成了一个环,如果在环上且在最小生成树上的权值最大的边等于 这条边的权值,那么,显然最小生成树不唯一 树上倍增可以解决这个问题 【代码】 阅读全文
posted @ 2018-06-09 22:46 evenbao 阅读(110) 评论(0) 推荐(0)
摘要:【题目链接】 点击打开链接 【算法】 首先,有一个结论 : 一定有一棵严格次小生成树是在最小生成树的基础上去掉一条边,再加上一条边 这个结论的正确性是显然的 我们先用kruskal算法求出最小生成树,然后,枚举不在最小生成树上的边,我们发现若加上这条边, 则形成了一个环,用最小生成树的权值和加上这条 阅读全文
posted @ 2018-06-06 21:27 evenbao 阅读(88) 评论(0) 推荐(0)
摘要:【题目链接】 点击打开链接 【算法】 求出这个图的最小生成树,对于每次询问,用倍增法求出最近公共祖先,查询最小生成树上两点路径上的最大值 算法的正确性? 假设x和y在最小生成树中路径上的最长边为p,那么,根据kruskal算法的执行过程,我们发现p合并 了x和y所在的集合 假设有一条边q,满足q < 阅读全文
posted @ 2018-06-04 22:28 evenbao 阅读(116) 评论(0) 推荐(0)
摘要:【题目链接】 点击打开链接 【算法】 sum[i]表示前i个杯子中,杯子底下藏有球的杯子总数 那么,知道[i,j]这段区间中,藏有球的杯子总数的奇偶性,相当于知道sum[j] - sum[i-1]的奇偶性 我们发现,知道哪些杯子底下藏有球,就是需要我们知道所有sum[i]的奇偶性 因此,我们只需将所 阅读全文
posted @ 2018-05-22 22:43 evenbao 阅读(227) 评论(0) 推荐(0)
摘要:【题目链接】 点击打开链接 【算法】 笔者做这题参考了这篇博客 : https://blog.sengxian.com/solutions/bzoj-1016 推荐阅读 首先,我们需要知道三个定理 : 定理1 : 若A,B是两棵不同的最小生成树,它们的权值从小到大排列分别为 : W(a1),W(a2 阅读全文
posted @ 2018-05-21 22:54 evenbao 阅读(263) 评论(0) 推荐(0)
摘要:【题目链接】 点击打开链接 【算法】 题目描述比较繁琐,但细心观察后,发现其实就是用kruskal算法求最小生成树 【代码】 阅读全文
posted @ 2018-05-09 19:57 evenbao 阅读(136) 评论(0) 推荐(0)