
并查集
文章平均质量分 61
空灰冰魂
=NULL
展开
-
【VIJOS1321】魔塔 并查集+建树+栈 ※※※※※有详细题解和代码注释
可以说是算法和数据结构之间的一种完美利用,使得这道VIJOS难度六的题目得到了解答。当然,其实我是自己想出来的解法,并不知道大家都是怎么解的,所以即使做过这道题的,不妨也来看一看这种思路。原创 2014-11-03 21:01:49 · 1817 阅读 · 0 评论 -
【BZOJ1202】【HNOI2005】狡猾的商人 并查集
题解:呃,这个题太耿直了。还能有负收益,也就是一个区间只需要有某段时间没有确定,或者有重叠,那就“一切皆有可能”。只有边界完全重合的一些区间神马的才能判错。于是写个耿直的并查集就好了。(可以a~b收益为c,a>b,反正有负收益233)代码:#include #include #include #include #define N 105using na原创 2015-01-10 22:16:50 · 1078 阅读 · 0 评论 -
【POJ3657】【USACO 2008 Jan Gold】 1.Haybale Guessing 二分答案,并查集check
题意:输入n、m表示数列长度为n,有m条有序的限制{l,r,x}。限制:l~r间所有数最小值为x。问到第几条限制开始出现矛盾,都不出现输出"0"。题解:首先这题比较厉害,正常解有点难,不妨转化成二分答案。我们二分“答案”,也就是第ans条出现矛盾。考虑到若一条限制S所在区间被另一个限制Seg包含,且Seg这条限制的x又比S.x大,那么也就是意为①原创 2014-12-23 17:46:34 · 2376 阅读 · 2 评论 -
【USACO 2008 Open Gold】 3.Cow Neighborhoods 平衡树、并查集
题解:首先曼哈顿距离有些不好维护,但是它可以转化:一个点本来的坐标是(x,y),那么可以转化成(x+y,x-y)这样就人为构造出一种性质:1、2两点曼哈顿距离=max(|x1-x2|,|y1-y2|);这样我们就可以排序单调搞掉一维,然后另一维只需要求前驱后继到该点的距离满足则加并查集。这个过程可以用权值线段树,也可以用平衡树。但是权值线段树还需要离散化,反原创 2015-01-02 11:03:51 · 1660 阅读 · 0 评论 -
【BZOJ3211】花神游历各国 树状数组 并查集 均摊分析
题解:一个点开几次方就没啦。所以我们只需要修改不是0或者1的点就行了。 均摊基本O(n)O(n)。 然后用并查集维护一个点右边第一个不是0的数。手写读入果然高大上。卡rank神器。 顺便Orz一下wys大神。代码:#include #include #include #include #include #define N 100100using namespace原创 2015-03-27 23:53:36 · 1304 阅读 · 0 评论 -
【BZOJ3910】火车 LCA+并查集
题解:首先找两点之间路径可以用倍增LCA。 然后标记哪个点走过可以用并查集,均摊下来最后是线性的。代码:#include #include #include #include #define N 501000#define LOGN 20using namespace std;struct Eli{ int v,next;}e[N1];int head原创 2015-03-31 16:08:26 · 1576 阅读 · 0 评论 -
【BZOJ2303】【Apio2011】方格染色 异或方程+并查集
题解:首先我们发现对于 ai,ja_{i,j} 有下列式子: ai,j xor ai+1,j xor ai,j+1 xor ai+1,j+1==1a_{i,j} ~xor\ a_{i+1,j} ~xor\ a_{i,j+1} ~xor\ a_{i+1,j+1} == 1 然后推导得到对于 ai,ja_{i,j} 有下列式子: a1,1 xor a1,j xor ai,1 xor原创 2015-04-16 21:52:19 · 3417 阅读 · 2 评论