
并查集的高级应用
文章平均质量分 50
空灰冰魂
=NULL
展开
-
【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 评论 -
【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 评论