
最小生成树 || 并查集
Chester_King
虽千万人,吾往矣。
展开
-
【洛谷】1967 [noip2013]货车运输 最小生成树+LCA
题目传送门这题和上一题的解题思路是一模一样的,也是先对给出的边做一遍最小生成树,哦不对,这题是最大生成树。然后还是把无根树转化成有根树,求每个点的倍增祖先。然后,这题的判断有点特殊,其实也挺简单的,可能是我为了中考失了智吧……就是判断给出的两个节点的祖先是否相同,若不同,则输出-1;若相同,则输出这两个节点到它们LCA的路径上的最小边权。其他只要想进去就挺简单的,总之细心一点吧原创 2017-06-13 16:55:07 · 374 阅读 · 0 评论 -
【BZOJ】1050 [HAOI2006]旅行comf 并查集
题目传送门学过的东西就应该及时巩固,否则和没学没有什么区别——我TMD把自己半年前做过的题目都忘了……刚一拿到这道题,我YY了很久,最短路?BFS?还是树结构?YY不出来,题解搜起来。然后我就搜到了codevs1001,舒适的路线,然后发现这题我TMD是做过的?!看了自己半年前的代码,发现是并查集……懵逼中……好吧,因为m的范围是5000,n^2能勉强接受,于是可以对所有边按权原创 2017-07-01 15:29:46 · 358 阅读 · 0 评论 -
【BZOJ】1016 [JSOI2008]最小生成树计数 最小生成树+DFS
题目传送门我看这道题不爽很久了,但是因为博主过于蒟蒻,一直都没能有什么特别的想法,就一直留到了现在。首先根据题意,我们应该对这张无向图做一遍最小生成树,判断这张图是否能生成一棵最小生成树,而不是一片森林。这题选用的最小生成树算法是Kruskal,在做Kruskal的同时我们应该把所有边权相同的边归为一类,并统计在最小生成树中该种边权需要几条,为之后的DFS和乘法原理做准备。之后就是原创 2017-07-02 08:37:13 · 399 阅读 · 0 评论 -
【BZOJ】1977 [BeiJing2010组队]次小生成树 Tree kruskal+LCA
题目传送门这题好像在好久以前就讲过啊……为什么我现在才去做……其实正解挺好想的,首先做一棵最小生成树,然后枚举一条非树边,显然这条非树边的加入可以使原本树上的唯一路径形成一个环,把这个环上严格第二小的边删掉,就是一棵严格次小生成树了。然后对所有的次小生成树求一个最小权值即可。至于怎么查找原来的唯一路径上的严格次大值,可以用ST表维护最大值和次大值。附上AC代码:#include <cstdio>#原创 2017-11-28 19:48:04 · 257 阅读 · 0 评论 -
【BZOJ】2654 tree 二分+kruskal
题目传送门好神的想法啊……这个二分好迷啊……我们可以二分一个值midmid,把所有白色的边都加上这个值,在最后计算边权和时减回去,也就相当于改变的白色边的优先级。然后刷kruskal,如果mst中的白色边数不小于给定的need则验证成功,修改二分的边界继续二分。附上AC代码:#include <cstdio>#include <cctype>#include <algorithm>using原创 2017-10-30 14:27:03 · 319 阅读 · 0 评论 -
【POJ】2728 Desert King 分数规划
题目传送门题目大意:给出nn个三元组(x,y,z)(x,y,z),第ii个三元组表示第ii个点的坐标为(x,y)(x,y)、权值为ww的点。两个点i,ji,j之间的距离为(xi−xj)2+(yi−yj)2−−−−−−−−−−−−−−−−−√\sqrt{(x_i-x_j)^2+(y_i-y_j)^2},权值为|wi−wj||w_i-w_j|,求权值与距离比例最小的生成树。这是一道经典的分数规划题目。话原创 2017-10-29 21:09:57 · 330 阅读 · 0 评论 -
【BZOJ】3732 Network 最小生成树+LCA
题目传送门挺有意思的一道题呢……至少,最小生成树+LCA的思想就非常棒。首先,对于所有给出的边做一遍最小生成树,删去最小生成树以外的边。然后,将最小生成树这棵无根树转化成有根树,当然还是树的重心。在建立有根树的同时记录当前节点倍增到当前祖先路径上的最大值。最后,对于每一次询问,做一遍LCA,同时统计所有倍增时的最大值,即为答案。附上AC代码:#include #inc原创 2017-06-09 20:32:35 · 411 阅读 · 0 评论 -
【BZOJ】3669 [Noi2014]魔法森林 kruskal+LCT
题目传送门一句话题意:求一条路径,使得max(ai)+max(bi)max(a_i)+max(b_i)最小。输出这个最小值。还是ZZK最强了,一眼就秒掉了这道题。首先我们把所有的边按aia_i排序,从前往后加入边,显然当前的边是最大的aia_i,我们只需要用LCT维护一个从1到n路径上的max(bi)max(b_i)就行了。不过LCT好像没法处理边权,那么我们可以换一种建LCT的方原创 2018-01-09 18:58:01 · 228 阅读 · 0 评论 -
【BZOJ】3430 [Usaco2014 Jan]Ski Course Rating 并查集
题目传送门这题嘛,我其实在普及组就做过了……好吧当时的题目没有给出多个起点,直接用二分+BFS的暴力就可以过去了。但是这题有多个起点,还让我们求的是所有起点的难度和(题目意思真难懂……),那我们就不能这么瞎搞了。考虑每个节点向它下方和右方建边,然后将所有的边sort一遍,对每条边的两端做并查集的合并。每次选取一条边,如果两端的联通块大小大于题目给出的t且其中一端的联通块大小小于t,...原创 2017-08-16 20:16:14 · 421 阅读 · 0 评论