随笔分类 -  ACM / 最小生成树

摘要:原题链接 考察:次小生成树 思路: yysy,切模板题很爽,但是莫得进步555 时间复杂度:O(T*(mlog2m+n2+m)) 1 #include <iostream> 2 #include <cstring> 3 #include <algorithm> 4 using namespace s 阅读全文
posted @ 2021-05-05 15:13 acmloser 阅读(45) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:次小生成树 思路: 模板题,这里我用的方法一,时间复杂度O(N*M+Mlog2m) 1 #include <iostream> 2 #include <cstring> 3 #include <algorithm> 4 #include <vector> 5 using namesp 阅读全文
posted @ 2021-05-05 13:25 acmloser 阅读(42) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:次小生成树 思路: 求免去费用道路两端玩具之和A/生成树权值B的最大值. 按贪心思想,应该是让B尽可能的小.对于A可以枚举每一条边,对于B是先求最小生成树的权值和. 如果免费的边在最小生成树中 ans = max(ans,A/最小生成树的权值和-road[i].w) 如果免费的边不在 阅读全文
posted @ 2021-05-05 13:00 acmloser 阅读(42) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:最(次)小生成树 思路: 很明显是求解严格次小生成树. 在当前图所有能构造树的方法中,边权和是第二大的生成树. 求次小生成树的两种方法: 1.先求最小生成树,枚举删取最小生成树的一条边,然后再做最小生成树 时间复杂度O(mlog2 m+nm) 但只能求非严格次小生成树 2.先求最小生 阅读全文
posted @ 2021-05-05 09:55 acmloser 阅读(127) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:最小生成树 思路: 本题要求完成图的最小生成树依旧是原树.考虑Kruskal算法,每次都是选择当前边两端合并为一个集合,我们要保证为完全图的话需要让左右端点的集合两两之间连一条边,同时保证原树的边是当前集合最小的边.因为原边不能代替所以考虑取road[i].w+1的边,边的数量是左端 阅读全文
posted @ 2021-05-04 17:07 acmloser 阅读(57) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:最小生成树 思路: 一眼扫过去超像Prim算法,实际上最小生成树的两种方法皆可.当我们刚开始建矿井时就像有个虚拟源点向实点伸展了一条边,所以建立个虚拟原点即可. 这道题是无向边所以不用管u,v到底哪个是被建矿井的端点. 1 #include <iostream> 2 #include 阅读全文
posted @ 2021-05-04 10:32 acmloser 阅读(60) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:最小生成树+枚举 错误思路: 枚举m个点,将m个点的边权值计入和,与点权值和作商求最小值 上面的思路错在题目是要求求m个点的树的比率最小.如果边权值不去掉一个而全部计入的话就会WA 正确思路: 枚举m个点,求最小生成树 1 #include <iostream> 2 #include 阅读全文
posted @ 2021-01-14 22:38 acmloser 阅读(69) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:最小生成树+并查集的运用+离线处理 永远不会动脑思考TAT 看大佬来的思路: 这道题的询问量很大.因此可以采取一些技巧.我们可以发现L大的答案是可以由L小的答案累加得来的.因此这道题对询问进行排序.先处理L小的询问.再进行累加推导L大的询问. 当i,j有多种路径,我们是选择一条经过路 阅读全文
posted @ 2021-01-14 16:41 acmloser 阅读(99) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:枚举+最小生成树 错误思路: 根据最小生成树建立邻接表.每次询问就dfs...这解法我没做出来.图的dfs还不太熟.等之后熟了再补吧. 正确思路: 每次询问求i,j最大权值与最小权值的差.实际就是问最小生成树上i到j的最大权值与最小权值的差.这道题可以直接枚举.参考上一题当i,j在一 阅读全文
posted @ 2021-01-14 14:18 acmloser 阅读(65) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:最小生成树 感觉很水,没做 但这道题看了别人代码更理解了最小生成树.我们没必要把已经建立公路的路设置权值为0,而是将他们并入集合.最小生成树会涉及所有的点.所以这些点一定会被并入最小生成树里. 别人的代码 记一下以后补了这道题 阅读全文
posted @ 2021-01-14 01:02 acmloser 阅读(62) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:最小生成树 错误思路: 计算每一条边,将最大的s-1条边的距离都变成0,再排序,让生成树选择 这个思路错在最大的边不一定在最小生成树里.我们要让图连通.需要先建一颗最小生成树.再让树的大边变成权值为0的边 谨记:最小生成树不是每条边都选了 1 #include <iostream> 阅读全文
posted @ 2021-01-14 00:49 acmloser 阅读(68) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:最小生成树 这道题难就难在怎么转成最小生成树的模型.本蒟蒻是看了别人的博客看着看着突然顿悟..(本蒟蒻不配) 正确思路: 字符串相互转化成相同的字符串.不同的字符串之间的字母差距其实就是这个字符串到不同的字符串的距离.明白之后直接套模板 1 #include <iostream> 2 阅读全文
posted @ 2021-01-13 21:20 acmloser 阅读(70) 评论(0) 推荐(0) 编辑