并查集
文章平均质量分 70
BraketBN
这个作者很懒,什么都没留下…
展开
-
【SPOJ-DYNACON1】Dynamic Tree Connectivity【LCT/并查集】
题意:和BZOJ2049一样。换了各种LCT姿势,一直TLE。后来发现可以用并查集...参考了Seter聚聚的blog:http://seter.is-programmer.com/posts/29428.html#include #include using namespace std;const int maxn = 100005;int n,原创 2016-02-24 19:49:20 · 871 阅读 · 0 评论 -
【Codeforces650C】Table Compression【并查集】【拓扑排序】
先排序,把大小相同的元素合并成一个集合。注意这些元素不一定在位置上相邻。然后再排序,从小到大建边。最后做个bfs,每个点的答案为并查集中的最大值。/* Footprints In The Blood Soaked Snow */#include #include using namespace std;const int maxn = 1000005, maxq =原创 2016-03-08 23:32:56 · 704 阅读 · 0 评论 -
【BZOJ1529】[POI2005]ska Piggy banks【并查集】
【题目链接】一个罐子的钥匙只可能在一个罐子里面(有可能是自己),打开了那个罐子就可以打开这个罐子,说明每个点的入度都为1。那么对于一个连通块,只有这一种情况:一开始在一个环里(有可能是自环),环上引出一条链,那么随便打碎一个环上的罐子,就可以打开其他的罐子。那么答案就相当于连通块的个数了。用并查集搞一搞就好了。/* Footprints In The Blood Soake原创 2016-03-25 10:07:21 · 398 阅读 · 0 评论 -
【BZOJ3827】[Poi2014]Around the world【尺取法】【并查集】
【题目链接】对于每个询问,设油量为d。先预处理出每个点走一次最多走到哪,这个用尺取法可以O(n)。然后得到一颗树,算一下每个点的深度。枚举起点,在树上一直向上爬,直到距离超过n,爬的过程同时用并查集合并。傻逼题卡内存。/* Pigonometry */#include #include #include using namespace std;cons原创 2016-04-14 22:56:30 · 920 阅读 · 0 评论 -
【BZOJ2772】policija【BCC】【割顶】【离线】【分治】【并查集】
【题目链接】先跑出dfs树。对于两个操作,先把不连通的情况用并查集搞掉。另外对于操作1,如果G1-G2是非树边,那么形成了环,这种情况肯定是yes。然后跑Tarjan,对每个操作形成的子树讨论一下就完了。#include /* Pigonometry */#include #include #include using namespace std;const原创 2016-04-28 15:33:20 · 566 阅读 · 0 评论 -
【BZOJ2054】疯狂的馒头【BZOJ2375】疯狂的涂色【并查集】
【题目链接】【题目链接】类似与链表那样搞一搞就可以了。注意有可能跑到第n + 1个点,于是也要给这个点赋个father。/* Telekinetic Forest Guard */#include #include #pragma comment(linker, "/STACK:102400000,102400000")using namespace std;原创 2016-05-04 22:34:46 · 865 阅读 · 0 评论 -
【BZOJ1196】[HNOI2006]公路修建问题【二分】【并查集】
【题目链接】二分最大边权,把不大于mid的边做个生成树。因为只要保证最大值不超过mid即可,具体边权、边权总和无所谓的。/* Telekinetic Forest Guard */#include #include #include using namespace std;const int maxn = 10005, maxm = 20005;int n,原创 2016-05-20 15:22:09 · 439 阅读 · 0 评论 -
【BZOJ4579】[Usaco2016 Open]Closing the Farm【并查集】【离线】
【题目链接】感觉和BZOJ1015差不多。。题解:倒着考虑操作,就变成了加边。记录当前时刻有多少个连通块,如果有一个,那么答案是YES,否则是NO。对于当前点,把当前点与已经添加进的点合并。每合并一次,连通块减一。(一开始连通块先++)复杂度:时间复杂度O(n+mα(n))空间复杂度O(n+m)收获:当两个点已经在一个并查集里的时原创 2016-06-10 10:10:42 · 1124 阅读 · 0 评论 -
【BZOJ4078】[Wf2014]Metal Processing Plant【2-SAT】【二分】【二分图】【并查集】
【题目链接】考虑比较暴力的方法,我们枚举两个集合的最大值S1, S2,那么我们可以用2-SAT来判断合法不合法(如果i, j之间的值大于S1,那么如果i在第一个集合,j只能在第二个集合,其他类似)。我们将边权从大到小排序,依次枚举S1,发现S2是单调的(S2越大,越可能合法),于是可以二分S2了。另外还有个优化,把枚举S1的过程看成加边的过程,我们发现当这个图不是二分图的时候就可以原创 2016-07-09 09:46:47 · 1844 阅读 · 0 评论