并查集
make_it_for_good
这个作者很懒,什么都没留下…
展开
-
1998: Fsk物品调度 并查集
题意:给出一个数组c[i]c[i],求一个数组pos[i]=d∗xi+yi+c[i]pos[i]=d*x_i+y_i+c[i] 满足对于任意j<ij<i,pos[i]!=pos[j]pos[i]!=pos[j]。并且满足最小化 yiy_i 的前提下最小化 xix_i 后面的不说了。从前到后枚举,如果当前点没有被访问过,从当前点 ii 开始枚举(i+d)%n(i+d)\%n ,这样会有一个环。当yi+原创 2016-09-01 15:22:14 · 303 阅读 · 0 评论 -
codeforces 687D Dividing Kingdom II 并查集
题意:n个点m条边的图,q次询问只保留 l,rl,r 之间的边,再去掉一些边使这个图变成二分图,求去掉的边权最大值最小是多少。只是想吐槽一下,这题10^9乘并查集log竟然能过!竟然能过!!竟然能过!!!枚举每个询问,从大到小加入所有l,rl,r 之间的边,然后搞一个维护到父亲距离的并查集,如果加入边的两个端点连通且距离为偶数就输出这条边的边权。因为二分图两点间的任意路径长度奇偶性一定相同。#inc原创 2016-09-08 15:12:53 · 393 阅读 · 0 评论 -
bzoj 3673&&3674 可持久化并查集 可持久化线段树
用可持久化线段树维护可持久化数组。 按秩合并和按size合并都是把小的合到大的上。 贴一个路径压缩+按秩合并的吧(跑得最慢)#include <bits/stdc++.h>using namespace std;#define N 210000#define M 10000000#define ls l,mid,ch[now][0]#define rs mid+1,r,ch[now][原创 2016-10-28 11:26:46 · 219 阅读 · 0 评论 -
bzoj 3060 [Poi2012]Tour de Byteotia 并查集
并查集先把两个端点大于K的所有边加进去,然后在不产生新的环的情况下加入剩下的边,没了。。。。 感觉poi2012比13,14,15的水多了呀。。。#include <bits/stdc++.h>using namespace std;#define N 2100000int n,m,K,ans;int a[N],b[N],fa[N];int find(int x){return x==f原创 2016-11-16 15:38:05 · 283 阅读 · 0 评论 -
bzoj 4296 [PA2015]Mistrzostwa 宽搜 并查集
先将所有度数小于d的点推入队列,然后把这些点相连的点度数-1,如果一个没入队过的点度数-1后度数小于d,那么把这个点入队。 然后找没入队过的点形成的最大连通块就是答案。#include <bits/stdc++.h>using namespace std;#define N 210000int n,m,d,tot,pos;int head[N],nex[N<<1],to[N<<1];in原创 2016-11-18 13:19:58 · 288 阅读 · 0 评论 -
bzoj 1453 双面棋盘 LCT 并查集
把每个格子看成点,同色格子之间连边。 LCT维护关于删除时间的最大生成树。 设有x1个原来与当前格子同色的连通块与当前格子断开,x2个原来与当前格子不同色的连通块与当前格子连通,那么会增加x1-1个当前格子原来颜色的连通块,减少x2-1个当前格子现在颜色的连通块。 写得比较挫,初始状态用的并查集。。。#include <bits/stdc++.h>using namespace std;#原创 2016-12-24 15:05:54 · 352 阅读 · 0 评论 -
3551 [ONTAK2010]Peaks加强版 kruskal重构树 可持久化线段树
名字是大爷起的。 不过这个东西好像确实很厉害的样子。。 一开始在想一个可持久化并查集+线段树合并+可持久化线段树维护根的做法。不过看到128M的内存果断选亡。。。设最初的所有点点权为0. 在kruskal的时候,每加一条边时新加一个点,两个并查集的根并到这个点上,这个点的点权是这条边的边权。 然后这个东西构成了一个堆式的结构,父节点的点权大于儿子的点权。 并且叶节点是最初的点。 两个点间原创 2017-01-06 19:32:41 · 585 阅读 · 0 评论 -
bzoj 3879 SvT 后缀数组 rmq 并查集
先求出后缀数组。 对于每组询问,按rank排序,求相邻两个的lcp,按lcp从大到小合并相邻两个,用并查集维护。#include <bits/stdc++.h>using namespace std;#define N 510000#define M 3100000#define ll long long#define mod 23333333333333333llint n,m,Q;原创 2016-12-20 15:41:01 · 474 阅读 · 0 评论