随笔分类 - 图论-最小生成树
摘要:于是,由Kruskal衍生性质(见本人MST学习笔记),可以单独处理每次相同的一堆边,因为保证了相同权值边不超过$10$条,所以直接爆搜即可。$O(可过)$。 细节:其实如果把并查集写成按秩合并,可以直接搜每条边选不选,选就继续搜下一条边,直到加入的边等于MST中该权值边数且无环,回退的时候撤回就行
阅读全文
摘要:一道结论题:如果最小生成树和最大生成树之间存在fib数,成立。不存在或者不连通则不成立。由于是01图,所以这个区间内的任何生成树都存在。 证明:数学归纳?如果一棵树没有办法再用非树边0边替代1边了,那他就是最小生成树。如果一棵生成树大于最小生成树,那么他显然存在可以被替换的1边,否则会与最小矛盾。最
阅读全文
摘要:题意:一张图求每条边边权最多改成多少可以让所有MST都包含这条边。 这题还是要考察Kruskal的贪心过程。 先跑一棵MST出来。然后考虑每条边。 如果他是非树边,要让他Kruskal的时候被选入,必须要让他连的两个点$u,v$连通之前被选上,也就是说,必须得小于MST上$u,v$路径中的至少一条边
阅读全文
摘要:这题这场比赛一堆人秒切。。果然还是我太菜了吗 题意:二分图,右边$m$个点每个点$i$向左边有且仅有两条连边,边权都是$a_i$。求最大匹配。 一个朴素思想,二分图匹配,用贪心带匈牙利搞一搞,但是复杂度$O(mn)$。````` 注意字眼“只能选一次”。对于同一个点连出的两条边只能择一。也就是说,左
阅读全文
摘要:这题和某道最短路题神似。对于任意点对,将他们连边,不如将他们分别沿$x,y$轴方向上点按顺序连起来,这样不仅可能多连通一些点,也花费更低,所以按照最短路那题的连边方式跑一个kruskal就行了。 1 #include<iostream> 2 #include<cstdio> 3 #include<c
阅读全文
摘要:关于Kruskal重构树可以翻阅本人的最小生成树笔记。 这题明显裸的Kruskal重构树。 然后这题限制$\le p$的边不能走,实际上就是要满足走最小边权最大的瓶颈路,于是跑最大生成树,构建Kruskal重构树。 通过倍增跳到最浅祖先位置,就get到了一个点可以走到的点集(子树所有叶子)。这些点里
阅读全文
摘要:方法一:套路性的,二分距离,然后把距离点对距离小于答案的边都联通起来,然后看集合数量超过k说明答案小,增大,否则减小。 方法二:贪心,类kruskal。n个点,k个连通块,则需要有效连接(同一个块内的点相互连接不算)n-k次。那么用类似kruskal的证明过程发现最小的边一定要联通使得集合与集合间距
阅读全文
摘要:标题解法是吓人的。 图上修改询问,不好用数据结构操作。尝试转化为树来维护。发现(不要问怎么发现的)最小生成树在这里比较行得通,因为最近异色点对一定是相邻的(很好想),所以只要看最短的一条两端连着异色点的边,而分析一下kruskal的过程,发现满足这种要求的最小边一定会被加进去(因为相邻异色点总要联通
阅读全文
摘要:前注:关于这题,本人的解法暂时没有成功通过此题,原因是被卡常了。可能需要等待某种机缘来请人调试。 类似uoj的一道题(新年的繁荣),不过是一个有些简单的版本。 因为是完全图,有没有办法明显优化建边,所以考虑用这个Boruvka算法。MST学习笔记里应当记下来了,可以自行前往。然后在这里,就发现使用B
阅读全文
摘要:题意:$n$个点,$q$次建边,每次建边选定$x,y$,权值$c$,然后接着$(y,x+1,c+1),(x+1,y+1,c+2),(y+1,x+2,c+3),(x+2,y+2,c+4)\dots$(画图理解),然后求最小生成树。 一开始想的是堆维护最小。。发现不行````` 这题是等效转化。回顾kr
阅读全文
摘要:法1——图论: 其实图论并不是我一开始就想出来的。。。纯粹是先受了网络流做法的启发改进的。对于每个士兵都要守护一行或者一列,将守护行看做标号$i$的点,连向所在的列$y+n$(注意平移),守护列则反过来。这样,这张图上每个点都有一个出边,这就是一片基环树森林。但是要注意的是,同一条边的两个方向不能同
阅读全文
摘要:简化题意:一序列,查询区间和$s_{i\sim j}$已知花费$c_{i,j}$,求知悉所有数最小花费。 神仙思路题 查询一个区间$i\sim j$,记前缀和$sum$,则如果在某时候知道了$sum_{i-1}$或者$sum_j$中的任意一个,另一个也可以知道,那么可以选择花费$c_{i,j}$连无
阅读全文
摘要:显然分析可知这个图最后连起来是一个森林,每棵树有一个根再算一个代价。那么这些跟需要连向某一点一个建立水库的代价,且根可以有多个但不能没有,则考虑用超级源点0向所有点连虚边,Prim跑MST即可保证有至少一个根。 1 #include<iostream> 2 #include<cstdio> 3 #i
阅读全文
摘要:跑一遍mst。对于非mst上的边,显然删掉不影响。 如果删边在树上,相当于这时剩下两个连通块。可以证明要重新构成mst只需要再加一条连接两个连通块的最小边,不会证,yy一下,因为原来连通块连的边权和已经最小化了,就不要动,如果换用两条以上的边,肯定不会更优。 所以问题就是断掉树边,找最小联通边。可以
阅读全文

浙公网安备 33010602011771号