[BZOJ1083][SCOI2005]繁忙的都市(二分+并查集)

题目描述传送门题目大意:给出n个点m条边的无向图,每一条边有一个边权,要求选出一些边,将n个点连通,并且边的数量最少,并且边权的最大值最小。题解首先二分答案,然后并查集判定这些边是否能将n个点连通 边数最少必然是一棵树啊代码#include<algorithm> #include&l...

2017-05-02 21:01:30

阅读数 616

评论数 0

[BZOJ2303][Apio2011]方格染色(数学相关+加权并查集)

题目描述传送门题目大意:一个n*m的网格染成红蓝两种颜色,要求每个田字格有1个或3个红色的。现在有一些格子已经染了颜色,问有多少合法的染色方案。题解和这题gang了一天。。。这题的关键在于,将每一个限制点的关系,转化成和第一行第一列的关系 若把颜色标记为0/1,那么每个田字格的异或值为1。首先枚...

2017-04-28 20:12:48

阅读数 546

评论数 0

[HDU1038]Ant Trip(并查集+欧拉图)

题目描述传送门题目大意:给出一个n个点m条边的无向图,问最少用多少条路径能覆盖每一条边恰好一次。题解用并查集维护出每一个连通块,然后统计每一个连通块内有多少个奇点,对答案的贡献应该为max(x/2,1) 需要注意的一点是如果有一个点自己是一个连通块的话对答案的贡献应该为0代码#include&l...

2017-04-13 21:32:18

阅读数 411

评论数 0

[BZOJ3706]反色刷(并查集+欧拉图)

题目描述传送门题解欧拉回路,比较显然的一点是有解的充要条件是没有奇点 刚开始一直在往维护黑边的连通块个数的方面考虑,然后就一直在想什么写个lct啊… 但实际上这样做是有一点问题的,因为白边不一定不走只要走偶数次就可以 那么可以将一条白边看成两条黑边,这样的话对每个点的奇偶性是没有影响的,而且...

2017-04-13 21:05:18

阅读数 643

评论数 0

[BZOJ2594][Wc2006]水管局长数据加强版(kruskal+lct)

题目描述传送门题解写lct就应该有那种誓死不看板子的气魄。这道题思路还是很清晰的,维护一棵最小生成树,每一次找树链上权值最大的边 删边变成倒序加边 最开始的时候用没有删的边kruskal直接最小生成树 动态的话就是维护一棵lct,每一次加边的时候先找树链上的最大边,如果最大边大于当前边就把最...

2017-04-01 08:42:29

阅读数 810

评论数 0

[BZOJ1604][Usaco2008 Open]Cow Neighborhoods 奶牛的邻居(multiset+并查集)

题目描述传送门题解刚开始想的是每一次只查询某一个点左下角离他最近的点,做4遍 这应该是可做的,但是为了练习stl (偷懒)想用set做,结果发现并不可做 因为貌似set的lower_bound只适用于一个关键字后来得知了一种很强的方法 就是把一个点的坐标变成(x+y,x-y) 两个点的哈弗...

2017-03-17 21:59:06

阅读数 273

评论数 0

[BZOJ1998][Hnoi2010]Fsk物品调度(置换群+并查集)

题目描述传送门题解首先考虑如何构造出pos 因为要求在x最小的情况下y最小 那么当y固定的时候x会有一坨取值,也会有一些不同的数 考虑先枚举y=0,然后如果x没有合适的取值再将y+1 因为要求最终的答案不重复,那么如果w已经在答案中出现过了,那么w+d是有可能出现的(将x+1),所以用并查...

2017-02-23 21:37:59

阅读数 606

评论数 0

[BZOJ4199][Noi2015]品酒大会(后缀数组+并查集)

题目描述传送门题解别出心裁的一道sa,想了好久。。40ptsO(n2)O(n^2)的做法应该很好想吧 sa+st表就可以了qwq100pts首先求出height数组 考虑如果只求一个r的话怎么做 显然可以将height数组分组,每个组里都是height>=r的,然后对于每一个组计数+取...

2017-02-16 11:27:34

阅读数 459

评论数 0

[UOJ#279][UTR#2B]题目交流通道(floyed+并查集+容斥)

题目描述传送门题解先贴上jiry的题解,讲的还是不错的 http://jiry-2.blog.uoj.ac/blog/2242 然后说一下我觉得比较重要的地方首先这道题怎么来考虑呢?考虑将最短路为0和最短路非0来求 将两两最短路为0的点都缩成一个点,那么形成的这个新图就是一个有很多重边的图,...

2017-01-09 10:16:22

阅读数 408

评论数 0

[BZOJ3624][Apio2008]免费道路(贪心+并查集)

题目描述 传送门 题解 贪心的思想:首先这一定是一棵生成树,那么我们先做生成树,尽量加水泥路,那么做完之后已经加入的鹅卵石路一定是必须要加的。那么我们打破第一次的生成树,再做一次生成树,首先把必须加的鹅卵石路都加进去,如果鹅卵石路不够k条的话再加进一些凑够k条,之后加水泥路使之成为一颗生成树...

2017-01-06 09:24:27

阅读数 506

评论数 0

[BZOJ3362][Usaco2004 Feb]Navigation Nightmare 导航噩梦(加权并查集)

题目描述传送门题解注意:时间乱序 加权并查集,维护两个参,互不影响。代码#include<algorithm> #include<iostream> #include<cstring> #include<cstdio> using namespac...

2016-12-15 17:30:08

阅读数 315

评论数 0

[BZOJ4602][Sdoi2016]齿轮(加权并查集+分解质因数)

题目描述传送门题解加权并查集,每一个点的dis表示这个点的代表元素转一圈这个点转了多少圈。然后正常做。 但是有一个问题,貌似数据范围很小,但是可以发现在极限情况下是1001000100^{1000},这就非常不好了。所以要把dis分解质因数来做。一定要想清楚数据范围!代码#include<...

2016-12-15 16:47:54

阅读数 436

评论数 0

[BZOJ3674]可持久化并查集加强版(可持久化线段树+并查集)

题目描述传送门题解可持久化并查集,实际上就是用可持久化线段树维护一下每一个点的father。这道题我加了路径压缩,这样的话感觉不是很科学,因为最坏情况下应该是log2log^2的。 据说这道题应该用按秩合并?代码#include<iostream> #include<cstr...

2016-12-15 16:45:03

阅读数 437

评论数 0

[BZOJ2959]长跑(lct+并查集)

题目描述传送门题解用lct维护一颗动态树。 如果连了某一条边形成了一个环,证明一次长跑这个环上的所有的点都可以被统计,所以可以将这个环缩成一个点。用ufs来实现。 那么一次长跑实际上就是在一条树链上跑,只有一个方向,在lct上维护一个sum就可以了。 时间复杂度是均摊的,因为每一个点至多被缩...

2016-12-09 19:05:41

阅读数 829

评论数 0

并查集 小结

并查集在许多题目里其实只是用来辅助的一个小数据结构,用来实现简单的查找和合并。本文只挑选了以并查集为中心、以并查集的灵活运用为根本的题目——经典的&&特殊的技巧[BZOJ4195][Noi2015]程序自动分析 Noi中竟然出了基础的并查集题目!这道题确实只是并查集的简单操作,只...

2016-11-19 19:33:27

阅读数 581

评论数 0

[BZOJbegin][NOIP十连测第九场]小P的生成树(数学相关+kruskal)

题目描述 题解因为我们最终是要求 sum(a)2+sum(b)2√\sqrt {sum(a)^2+sum(b)^2}尽可能的大,所以我们肯定不能单独考虑其中一个权值的影响。那么如何将两个影响考虑到一起呢?我们把(ai,bi)(a_i,b_i)看成是有方向的向量,那么最终选取的边的和应该也是一个有...

2016-11-17 08:13:04

阅读数 434

评论数 0

[BZOJbegin][NOIP十连测热身赛]星球联盟(并查集)

题目描述传送门题解首先搞出来一颗生成树。如果存在多个连通块,把它们都连到1上去。 对于每一条非树边,连上它形成一个环,那么这个环上的所有点一定是在同一个联盟里的。 于是我们可以用并查集将树链上的点缩起来,在做并查集的过程中维护点的大小。由于每个点都只会被合并一次,时间复杂度是O(n)O(n)的...

2016-11-16 18:49:33

阅读数 496

评论数 0

[BZOJ4579][Usaco2016 Open]Closing the Farm(并查集)

题目描述传送门题解和什么星球大战starwar那道题很像。。直接倒序上ufs就可以了。 动态维护联通块个数。 每条边只会被左右端点枚举两边,时间复杂度O(2∗m∗α(n))O(2*m*\alpha(n))代码#include<iostream> #include<cstrin...

2016-11-16 14:41:44

阅读数 375

评论数 0

[BZOJ1232][Usaco2008Nov]安慰奶牛cheer(贪心+kruskal)

题目描述传送门题解将每一条边的边权记为原边权*2+两个点的权值,然后做最小生成树。 但是发现这样的话起点会少访问一次。 起点无论是哪个都是这n个点之中的嘛。。那么选一个最小的就好啦。代码#include<algorithm> #include<iostream> #in...

2016-11-15 20:49:32

阅读数 397

评论数 0

[BZOJ4195][Noi2015]程序自动分析(离散化+ufs)

题目描述传送门题解ij的范围比较大,而n的范围只有10510^5,直接离散化之后上ufs就好了。 将等于的情况先处理,不等于的情况后处理。代码#include<algorithm> #include<iostream> #include<cstring> #i...

2016-11-02 09:28:09

阅读数 368

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭