
并查集
文章平均质量分 65
高级数据结构之一
Happig丶
我的孤独,虽败犹荣
展开
-
Codeforces 875F. Royal Questions(贪心+并查集)
传送门题目大意有nnn个王子,mmm个公主,每个公主都恰好有两位中意的王子以及会带来的彩礼价值,问如何安排婚姻可以使得总的彩礼价值和最大。解题思路第一眼可能觉得是二分图,但是数据范围显然跑不了二分图的算法。首先明确一点。也就是说将彩礼价值从大到小排序后,如果能选价值大的那么一定先选,这样结果不会变差,这启发我们进行第一步排序。然后我们分析这样一个例子,三个公主中意的王子分别为(1,2),(2,3),(3,4)(1,2),(2,3),(3,4)(1,2),(2,3),(3,4),我们把王子看做点原创 2021-02-24 01:00:29 · 257 阅读 · 0 评论 -
D - 点一成零(二维并查集)
传送门题目大意给出一个n∗nn*nn∗n的01矩阵,选择某个连通块的其中一个1就能将这个块中所有的1都变成0,求每次将某个位置变为1后再将所有连通块都变为0的方案数(变为1后的位置会影响到下面的查询)。解题思路首先如果没有修改操作,也就是找到所有的连通块的个数cntcntcnt以及每个连通块中1的数量xix_ixi,答案就是cnt!∗∏i=1cntxicnt!*\prod_{i=1}^{cnt}x_icnt!∗∏i=1cntxi。然后考虑修改,假设修改位置已经是1那么就是上次的答案;如果是原创 2021-02-15 12:49:55 · 301 阅读 · 0 评论 -
HDU - 6763 Total Eclipse(并查集)
传送门大意:给出一个无向带权图,每个点都有权值,现在可以每次在一个连通块中选择权值最小的点并将所有点减去这个权值,该点变为0,花费为这个最小权值,问将所有点都变为0最小的花费考虑一个简单的图:假设x<y,x<zx<y,x<zx<y,x<z,那么第一次花费xxx,y,zy,zy,z分别变为y−x,z−xy-x,z-xy−x,z−x,然后二者是相互独立的,也就是说和xxx相连的边都会变成独立的连通块,最后总的花费是y+zy+zy+z。这个过程如果写程序的话,每次连原创 2020-07-26 20:00:26 · 361 阅读 · 2 评论 -
POJ - 1988 Cube Stacking(带权并查集)
传送门好久不写带权并查集,TLE和WA了好几发也没想出来这题怎么写。设方块iii的权值为viv_ivi,其含义为下面有多少个方块,设sis_isi为其上面的方块数量,初始时si=1s_i=1si=1,当我们合并两个集合的时候:在FindFindFind时更新了v1v_1v1,在111集合合并到333集合后,因为222的祖先还没有改变,那么之后用到222时Find(2)Find(2)Find(2)即可路径压缩将222的祖先设置为333,其下正确的方块个数也会更新为v2+=v1v_2+=v_1v原创 2020-07-24 18:26:30 · 195 阅读 · 0 评论 -
智算之道第二场 情报站(并查集)
题目大意现在我方已经查明,敌人通信所使用的加密方式依赖于一个长度为 nn 的数列,只要得知了这个数列中每个数的值,我方便可破解敌方的通信。通过深入敌人内部的内线人员的艰苦奋斗,我方逐渐获得了一些有用的情报,通过这些情报,整个数列正在被不断地破解。先后有mmm条情报被得知,每条情报是以下两种情况之一:情况111:知道了数列中第xxx个数的值情况222:知道了数列中第xxx个数和第yyy个数的和每得知一条情报,我方都试图破解数列中元素的值。作为情报部门核心技术人员的你,请编程实现如下功能:每次得知一条原创 2020-07-21 16:59:38 · 266 阅读 · 0 评论 -
H - 和平精英(二分+并查集)
传送门1.很经典的一道题,之前做过类似的一道题碟中谍,这个题只是判断条件多了几个,但是做法都一样2.首先要满足圆的半径尽量大,因为这样才可以覆盖的范围更大以至于敌人无法通过,然后答案又要求最小,肯定想到二分圆的半径了3.然后我们知道,当圆与圆至少有一个交点时,那么中间是无法通过的,不难想到这时的圆与圆形成了若干个连通块,那么考虑这些连通块,我们只需求出连通块的上下左右边界,然后判断是否形成如下四种情况之一:时间复杂度O(n2logk),kO(n^2logk),kO(n2logk),k为常数#原创 2020-06-08 10:35:26 · 705 阅读 · 0 评论 -
POJ 1182 食物链(带权并查集经典例题)
题目链接动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B, B吃C,C吃A。现有N个动物,以1-N编号。每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。有人用两种说法对这N个动物所构成的食物链关系进行描述:第一种说法是"1 X Y",表示X和Y是同类。第二种说法是"2 X Y",表示X吃Y。此人对N个动物,用上述两种说法,一句接一句地说出K句话...原创 2020-03-06 16:54:32 · 1910 阅读 · 0 评论 -
并查集和带权并查集
并查集简介并查集是一种以数组为存储结构的树形数据结构,当其中一些元素发生从属关系时,我们把可以关联的元素看做一个个的集合(即A连接B,C也连接B,那么A,B,C可以看做一个集合)基本操作初始化首先定义一个father数组,初始化就是令数组中每个人的爸爸都是他自己,即f[i]暂时(这里很重要)表示i的爸爸。当出现这种情况时,它就是这一脉的祖宗for(int i=0;i<n;i++)...原创 2020-01-12 10:16:07 · 722 阅读 · 0 评论