
数据结构 并查集
文章平均质量分 73
yuhong_liu
这个作者很懒,什么都没留下…
展开
-
LA-3027-Corporative Network-更新深度的并查集
对I操作,直接连上该点与父节点即可对E操作,用findlen函数,会找到a的根节点,并且在找的过程中更新a到根节点之间所有点到根节点的距离,从而下次查找复杂度为O(1) (如果查找的点为a到根节点之间的点,included)1#include #include #include #include #include #include using namespac原创 2015-09-04 22:20:11 · 434 阅读 · 0 评论 -
hdu -3926-简单判同构并查集
http://acm.hdu.edu.cn/showproblem.php?pid=3926简要判断图的同构,由于点度数不超过2只可能形成环、链、点,因此用并查集合并与记录判断 是否为环,就看加入的边,时候之前已经联通,如果是,则说明存在环最后判断同构的时候,只需要取每个联通分量的 根节点信息比较【节点数,环还是链...】 似乎后台没这组数据18 7原创 2016-07-12 14:08:11 · 346 阅读 · 0 评论 -
hdu-3367-Pseudoforest-并查集
http://acm.hdu.edu.cn/showproblem.php?pid=3367题意:给你一个图,让你找出一个Pseudoforest子图,Pseudoforest指图里的每个连通分支里的环的数量都不超过1。每个子图的value就是所有边的和,求一个最大的 符合条件的Pseudoforest子图大致就是对每个连通分支,进行删边,尽量删权值小的边,原创 2016-07-12 16:45:30 · 316 阅读 · 0 评论 -
hdu-3314-并查集
http://acm.hdu.edu.cn/showproblem.php?pid=3314如果形成环,则标记一下,最后统计一遍每个人得多少票,看是否唯一即可#include #include #include #include #include #include #include #include #include #include using原创 2016-07-12 17:17:51 · 364 阅读 · 0 评论 -
hdu-3038-How Many Answers Are Wrong-带权并查集
http://acm.hdu.edu.cn/showproblem.php?pid=3038题目大意:有n次询问,给出a到b区间的总和,问这n次给出的总和中有几次是和前面已经给出的数据中是矛盾的?操作: x y z 表示【x,y】的和为z把区间【x,y】的和为z ,转化为 【1,x-1】,【1,y】的差为z,这样我们就可以用并查集方便地处理原创 2016-07-17 15:53:02 · 231 阅读 · 0 评论 -
hdu-2818-Building Block-带权并查集
http://acm.hdu.edu.cn/showproblem.php?pid=2818有n条管pipe,能把砖块串起来,初始每条管穿了一个砖题意: 有2种操作: M x y把x的管放在y管的上面 C x求x的下面有多少个砖块带权并查集,维护一个num[i]表示i到根节点之间有多少块砖,再维护一个tol[x]数组,表示管x上一共串有多少个砖块合并就原创 2016-07-17 21:44:04 · 434 阅读 · 0 评论 -
hdu-2480-Steal the Treasure-贪心+缩点
http://acm.hdu.edu.cn/showproblem.php?pid=2480边排序,贪心选择大的,遇到单向边直接选并标记起点x,遇到双向边,且起点可以任选,则缩点,若起点唯一,则按照单向边处理,标记起点#include #include #include #include #include #include #include #includ原创 2016-07-18 10:40:41 · 477 阅读 · 0 评论 -
hdu-1811-Rank of Tetris-并查集缩点+拓扑
http://acm.hdu.edu.cn/showproblem.php?pid=1811题意:自从Lele开发了Rating系统,他的Tetris事业更是如虎添翼,不久他遍把这个游戏推向了全球。为了更好的符合那些爱好者的喜好,Lele又想了一个新点子:他将制作一个全球Tetris高手排行榜,定时更新,名堂要比福布斯富豪榜还响。关于如何排名,这个不用说都知道是根据Rating原创 2016-07-20 23:43:59 · 326 阅读 · 0 评论 -
UVALive 4487 - Exclusive-OR -并查集 虚根
对于操作1,直接将其与虚根n+1连起来对于操作2,则正常并起来对于操作3,先把所有x与其fa 打包,按fa排序,判断是否连续偶数个的fa一样,如果一样则可以求值,如果不是偶数个,则看其根是否为虚根n+1,是也可以求值,两种都满足则OK,不然就是无法求#include #include #include #include #include #includ原创 2016-08-18 22:21:55 · 610 阅读 · 0 评论 -
hdu-3938-Portal-并查集
http://acm.hdu.edu.cn/showproblem.php?pid=3938简单的讲就是,给你一张无向图,求有多少对点之间的路径花费小于L这里路径花费:u-v 两点之间的多条路径中的最长的边最小值,一条路径中最长的边为其花费,若有多条取最长边最短的一条边。数据规模:There are multiple test cases. The first原创 2016-07-11 15:45:55 · 626 阅读 · 0 评论 -
hdu 4056 Draw a Mess -并查集+滑动法
http://acm.hdu.edu.cn/showproblem.php?pid=4056题意:给n*m的格点 (n=200,m=5e5)q次操作,每次按 四个几何图形 的面积去覆盖格点 ,每个图形带有一个颜色C (q=5e5,C=[1-9])问最后q次操作完成后,每种颜色的格子有多少个,输出9个数可以知道,颜色会覆盖,因此,从最后面开始处理,如果当前要涂色的格子原创 2016-07-11 11:29:08 · 382 阅读 · 0 评论 -
LA -3644 X-Plosives -并查集
...如果能把题目转化为 并查集 就非常简单-.- 不然的话真是没什么思路#include #include #include #include #include #include #include #include #include #include using namespace std; int fa[100005];int find(int x原创 2015-09-04 17:40:52 · 402 阅读 · 0 评论 -
hdu-5441-Travel-带权并查集
题意 给你n个城市m个边,每条边有一权值,表示路费如果给出一笔钱,钱大于路费则表示该条路可以通过通过这条路 则代表 点 (a,b) 和(b,a)是合法的点,合法的对数为2k次查询,每次查询给出一笔钱,求该笔钱能走过的所有点的合法对数对输入的边按权值排序,对输入的钱数按权值排序对第一笔钱,把权值比钱小的边 全都加到一个并查集,设两端点为t1,t2 i原创 2015-09-15 08:40:06 · 773 阅读 · 5 评论 -
POJ-1182-食物链- 经典并查集应用
POJ - 1182食物链Time Limit: 1000MS Memory Limit: 10000KB 64bit IO Format: %I64d & %I64uSubmit StatusDescription动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B, B吃C,C吃A。原创 2015-11-19 17:08:32 · 360 阅读 · 0 评论 -
poj-2513-Colored Sticks-字典树trie / hash +并查集 欧拉回路
..........一看到题。。试着用hash水一下。。wa用map水一下TLE。。好吧。。trie试一下。。。wa .wa .wa.....好吧。。最后发现是自己傻逼了。。。 窝一开始犯了傻逼错误,以为 直接 计算颜色出现的种数。。。奇数个数的颜色为0或2 就 合法。。然而这只是必要条件.....不是充分条件...........原创 2016-01-17 22:20:58 · 471 阅读 · 0 评论 -
POJ-1703-Find them, Catch them-带权并查集
裸的带圈并查集更新祖先的时候 顺便 维护一下 距离就可以了,距离只有0.1,分别代表两个帮派合并的时候,更新距离/* x->fx y->fy dis(fx->fy)=dis(x->fx)+dis(y->fy )+dis(x->y)对应了 path[fx]=(path[x]+path[y]+ 1)%2; */#include #incl原创 2015-12-07 11:46:42 · 384 阅读 · 0 评论 -
HDU-2473-Junk-Mail Filter-并查集的删除操作
题意就是模拟并查集进行合并操作,并且要求能删除显然由于并查集用了路径压缩,树的结构已经改变了,并不支持真的删除..但是这里的删除仅仅是抹去该节点,将其独立出来,并不影响他所在的集合的别的点。那么我们只需要一个mark数组,记录 某个节点的真实下标,一开始mark[i]=i,当删除i之后,我们可以让他指向 n+i也就是,以后再访问i节点,都被映射到n+i这个节点,因为没有真正地删除i节点原创 2016-03-05 13:40:55 · 362 阅读 · 0 评论 -
hdu-4496-并查集
http://acm.hdu.edu.cn/showproblem.php?pid=4496给n个点m条路要你一个个拆掉路,拆掉路i时,输出当前联通块逆向模拟即可,从最后一条开始添加,并查集维护#include #include #include #include #include #include #include #include #include原创 2016-07-10 17:02:56 · 285 阅读 · 0 评论 -
hdu-4313-并查集
http://acm.hdu.edu.cn/showproblem.php?pid=4313题意,给你一个n点,n-1条边的图给你k个点,要求删除一些边使得k个点完全不连通求删除边集的最小价值又是这种删边的问题,可以逆向地用并查集处理正向地一条条删边是很麻烦的,如果我们逆过来,从头构图,把边按权值由大到小排序,每次选一条边,看加入 其后【是否导致 K原创 2016-07-10 17:56:45 · 290 阅读 · 0 评论 -
UVALive 4730 -树状数组+带权并查集
题意:有T组测试数据,每组数据的N表示有N个城市,接下来的N行里每行给出每个城市的坐标(0(1)"road A B",表示将城市A和城市B通过一条道路连接,如果A和B原来属于不同的城市群,经过这个操作,A和B就在一个城市群里了,保证每条道路不会和其他道路相交(除了端点A和B)。(2)"line C",表示查询当穿过y=C的直线,有多少个城市群、这几个城市群一共有多少个城市。以C原创 2016-08-18 23:19:03 · 419 阅读 · 0 评论