并查集
文章平均质量分 56
neither_nor
这个作者很懒,什么都没留下…
展开
-
BZOJ4569 [Scoi2016]萌萌哒
一眼觉得是并查集,yy了一下线段树优化发现不可sing,orz了ljss神犇被告知是倍增优化倍增,一个点[i][j]代表某个i往后2^j个数,把点按倍增次数分层,两个同层的点在一个连通块说明两个点所代表的区间相等把每个操作拆到logn个点上,两两用并查集合并然后从高层向低层下传,设当前层为j,假设x1,x2,x3……xt在一个连通块中,则将x2到xt的左儿子(即第j-1层的x)都与x1原创 2016-05-11 11:27:53 · 1380 阅读 · 1 评论 -
BZOJ1018 [SHOI2008]堵塞的交通traffic
线段树分治裸题把每条边存在的区间建到线段树上,然后深搜线段树,按秩合并并查集维护连通块,回溯的时候回滚操作#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace s原创 2016-05-18 18:24:10 · 1195 阅读 · 0 评论 -
BZOJ2054 疯狂的馒头
对于每个点,只有最后一次染色是有意义的,所以我们倒着染色,然后一个点染完了我们就把他指向他后边第一个没被染过的点,然后每次沿着指针往后跳,用并查集优化这个过程,复杂度O(n)#include#include#include#include#include#include#include#include#include#include#include#include#in原创 2016-08-17 19:17:20 · 593 阅读 · 0 评论 -
BZOJ4690 Never Wait for Weights
第一反应是LCT什么鬼……我是不是没救了然后看了一眼AC代码长度,瞬间发现自己是傻逼……拿带权并查集维护就行了,每个点维护一下自己比自己的爹青多少,连边和路径压缩的时候更新一下即可#include#include#include#include#include#include#include#include#include#include#include#incl原创 2016-08-29 08:06:39 · 860 阅读 · 0 评论 -
BZOJ4320 ShangHai2006 Homework
考虑对询问大于根号300000和小于根号300000的分开做,对于小于根号300000的,直接开个数组记录答案,插入的时候O(根号300000)更新,对于大于的,假设询问数为k,我们枚举j=ik,i>=0,ik这个我们可以倒着做,每个点用并查集指向大于等于他的第一个数,倒着做把加入变成删除,删除的时候就直接把x这个点的根指向x+1的根#include#include#include#原创 2016-08-19 17:53:30 · 489 阅读 · 0 评论 -
BZOJ4668 冷战
其实就是维护一下最小生成树上的链上边权最大值,而且加入的边权还是递增的,随便写个LCT不就过了TLE了,妈蛋这题有个特殊的性质就是加入的边权就是递增的,所以连接两个连通块之前两个连通块里的边权都小于这个边的边权,这样的话其实只要把这两个连通块连起来,连哪两个点对答案是没影响的,所以按秩合并就行了按秩合并:#include#include#include#include#in原创 2016-08-11 15:01:22 · 1062 阅读 · 0 评论 -
BZOJ3444 最后的晚餐
在合法的情况下,最后肯定是所有人的喜欢关系组成了若干个链,然后这些链可以任意排列,长度大于2的链可以翻转,所以答案就是链数量的阶乘乘以2的长度大于1的链个数次方不合法的情况:分叉了,有环当然两个人互相喜欢这种情况是不算环的>_#include#include#include#include#include#include#include#include#include原创 2016-08-12 09:27:51 · 933 阅读 · 0 评论 -
BZOJ3712 [PA2014]Fiolki
容易发现我们只需要求出每种反应的发生时间,然后排序做一遍即可求反应的发生时间,就相当于一张图,开始每个点都是单独一个连通块,连通块会不断合并,求每条边的两个端点联通的时间整体二分一下即可,每次判断现在是否联通吧边分到左右两边用dfs版的话并查集回滚要按秩合并,多个log,所以写bfs版的就好#include#include#include#include#include#原创 2017-03-29 10:52:25 · 386 阅读 · 0 评论 -
BZOJ3069 [Pa2011]Hard Choice 艰难的选择
删边不好做,我们考虑倒着来,这样变成加边先随便搞个生成树,为了方便不妨按删除时间做最大生成树,这样能保证先加入的一定是父子边,后加入的是非树边那么一次原来的删边操作就相当于把树上一条链上的点都缩起来用并查集维护即可#include#include#include#include#include#include#include#include#include#inc原创 2017-04-01 11:31:10 · 695 阅读 · 0 评论