![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并查集
01232012
lnssyzx的蒟蒻
展开
-
bzoj P1529 [POI2005] ska Piggy banks (luogu P3420)
算法:并查集 难度:水题(NOIP----) 这真的是一道水题,大佬们刷线段树、主席树累了,可以来写这道题。 很容易发现应该用并查集,同时,也易证 它具有传递关系,打开这个罐子,就能打开另某一个罐子 赋初值 ans=n; 所以,对于每一次merge,如果findf(x)!=findf(y),那么就说明ans可以减1了, 然后,,就,结束了。 代码如下 #include <cst...原创 2018-09-25 19:35:36 · 109 阅读 · 0 评论 -
bzoj 3296: [USACO2011 Open] Learning Languages
简述题意: 农夫约翰的N(2<=N<=10,000)只奶牛标号为1..N,同样的有M(1<=M<=30,000)种牛语标号为1..M,第i只奶牛会说K_i(1<=K_i<=M)种牛语,分别为L_i1,L_i2,…,L_{iK_i}(1<=L_ij<=M),农夫的奶牛不是特别聪明,所以K_i的累加和不大于100,000。 两只奶牛只有当他们至少有一...原创 2018-10-26 19:35:22 · 219 阅读 · 0 评论 -
bzoj 1050: [HAOI2006]旅行comf(并查集)
算法:并查集 难度:NOIP 题解: 将所有边权从小到大排序,正序枚举最小边,在以第i条边为最短边的情况下,枚举j(权值比i大的边),用并查集维护全图的连通性,如果s,t已经连通,并且做到可以更新答案,那么就可以break了,因为继续枚举j是没有意义的,计算出的答案一定比现在的答案大(因为我们之前把边权从小到大排序了!)。这样我们通过枚举以i为最短边,维护s,t连通性,完美的求出了最优...原创 2018-10-29 14:29:16 · 173 阅读 · 0 评论 -
bzoj 3444 最后的晚餐 (并查集)
题目: n个人排成一排,有m个条件,第i个条件要求ai和bi相邻,求方案数。 【数据范围】 100%的数据,0<n≤500000,1≤Ai,Bi≤n,0≤m≤n,保证没有人自恋。 算法:并查集+组合数 难度:NOIP 题解: 由于要求排成一排,因此如果关系出现了环则无解;而一个位置最多挨着两个,所以deg[x]>3也无解。 那么剩下的就是若干条链和单个点。每一条链的...原创 2018-10-21 20:59:21 · 174 阅读 · 0 评论 -
bzoj 3211:花神游历各国/3038 上帝造题的七分钟2(luogu 4145)
算法:并查集+树状数组/分块/线段树 难度:(NOIP+) 简述题目:区间开方,区间求和 区间求和很容易想到树状数组/线段树,可是区间开方怎么搞呢?暴力O(n*n),TLE到飞 我们可以发现,一个10^12的数,最多开6次方(向下取整)可以变成1,变成1之后,无论开多少次方都是1,所以就可以跳过这个数,这个可以用并查集搞,开始时父亲都指向自己,如果变成1,就把父亲指向下一个位置即可...原创 2018-09-29 19:49:37 · 272 阅读 · 0 评论 -
bzoj P1202 [HNOI2005]狡猾的商人(luogu P2294)
算法:并查集 难度:好题(NOIP) 题解丢了,以后填坑,逃 代码如下: #include <cstdio> #include <iostream> #include <cstring> #include <cstdlib> #include <cmath> #include <algorithm> #inc...原创 2018-09-28 21:07:11 · 116 阅读 · 0 评论 -
bzoj P1015 [JSOI2008]星球大战starwar(luogu P1197)
算法:并查集 难度:水题(NOIP-) 这道题很容易看出来要用到并查集,但是由于无法做到在并查集中删点,所以我们选择反着搞,将删点改为加点,然后就很轻松的可以搞“并查集求联通块个数”了, 注意:数组不要开小了!N (1 < = N < = 2M) 和M (1 < = M < = 200,000) 代码如下: #include <cstdio&g...原创 2018-09-28 21:04:43 · 154 阅读 · 0 评论 -
bzoj P1104 [POI2007]洪水pow (luogu P3457)
**算法:并查集** 难度:(NOIP-) 其实这道题可以不用并查集,直接bfs即可,但是这个搜索是有技巧的,不能暴搜! 首先,容易发现,只在所有自己的城市建水泵一定是最优解,所以,根据这条性质我们来bfs 对自己的城市按高度排序,该城市不用建的前提是从他出发经过一条高度都小于等于他的路径能到达一个已经修建水泵的城市! 技巧:用循环来取代深搜,可以防止回溯不清...原创 2018-09-21 20:07:16 · 181 阅读 · 0 评论 -
luogu P3623 [APIO2008]免费道路
算法:kruskal 、贪心 难度:(NOIP) 注意:*细节多* 首先,你什么也不会发现,因为它很裸,用到一点贪心的知识,先拿出所有水泥路来玩Kruskal,如果形成了一棵树,那就形成一棵树吧,反正有SPJ,如果没有形成一棵树,就拿出鹅卵石路往树上拍,并且把这些鹅卵石路标记上,因为它们是使图联通必不可少的边,累加k。然后memset(fa),再次跑Kruskal,首先把必须需要的鹅卵...原创 2018-09-21 20:03:06 · 164 阅读 · 0 评论 -
【NOI2015】BZOJ4195程序自动分析(并查集+离散化)
算法:离散化+并查集 难度:NOIP 首先,易证(数据范围:10^9那么大,如果开一个10^9的fa数组的话,空间肯定超限),此题需要离散化----->方法 all in all,离散化有三步: 1.排序 2.去重(可以用到unique去重函数) 3.二分索引(可以用到lower_bound函数) 离散化之后,将e=1的情况(等式)直接添加到并查集中,之后枚举检验不等式是否成立...原创 2018-10-03 19:20:46 · 159 阅读 · 0 评论 -
bzoj 3714: [PA2014]Kuglarz
简述题意:n(1≤n≤2000)个数每个数是0或1,现在可以花费ci,j知道[i,j]的奇偶性,问将所有数都找出来的最小花费。 难度:NOIP+ 题解不要问我(我与hzwer一起跪在电脑前) 注意数组的大小 代码如下: #include <cstdio> #include <iostream> #include <cstring> #include ...原创 2018-11-01 07:55:54 · 279 阅读 · 0 评论