
并查集
wanherun
今天会有好事发生吗
展开
-
loj6157 A^B Problem
题目树上一条路径上边权的异或,显然相当于两个到根的异或再异或起来。 这样,相当于我们每次都知道到根的异或值。这样我们就可以并查集处理了,记录到根的异或值,每次判断一下就好了。#include<bits/stdc++.h>#define N 500000 using namespace std;int T,n,m,x,y,f[N+5],w[N+5],z,flg;int u[N+5],v[N+原创 2018-01-27 08:38:18 · 393 阅读 · 0 评论 -
bzoj4668 冷战
题目好久没写blog了,可能是因为最近比较忙吧,距离noip2017也就60个小时左右了吧。要开始复习一下模板了。这道题问是否联通,显然要用并查集来做,但是,是否能路径合并呢? 简单想一想,当然不能啦,因为我们每个结点上要记录一个时间标记,然后构成一个像树一样的结构(当然可能有其它做法)。但是,裸的并查集会超时的,如何优化呢?并查集主要优化就两个:路径压缩和按秩合并,前者接近O(n),后者能让高度原创 2017-11-08 22:43:36 · 472 阅读 · 1 评论 -
bzoj1370 [Baltic2003]Gang团伙
题目noip既视感。显然并查集。我们拆点,吧a拆成a与a’,如果是’F’的话,a与b连,否则,a与b’,a’与b。这样就好了。#include<bits/stdc++.h>#define N 5000 using namespace std;int m,n,x,y;int f[N+1],ans,tmp[N+1];char ch;inline char nc(){ static原创 2017-09-24 20:44:45 · 279 阅读 · 0 评论 -
bzoj2054 疯狂的馒头
题目区间操作,首选线段树,但是这道题显然不可行。怎么办,我们考虑如果从后往前的话,一个数最多被修改一次,并查集就派上用场了。看代码#include<bits/stdc++.h>#define N 10000000using namespace std;int n,m,p,q;int f[N+1],a[N+1];inline char nc(){ static char buf[1原创 2017-09-24 20:41:08 · 275 阅读 · 0 评论 -
bzoj3732 Network
题目貌似又是一道模板题,kruskal重构树233,合并时按秩合并,深度最多logn,这样以后,连倍增都可以不要,直接走就好了。#include<bits/stdc++.h>#define N 15000#define Max(x,y,z) max(max(x,y),z)using namespace std;int n,m,k,num,x,y;int f[N+1],siz[N+1];i原创 2017-09-09 16:19:11 · 211 阅读 · 0 评论 -
bzoj4195 [Noi2015]程序自动分析
题目我居然会做noi的题目233。还是比较简单的了,先把所有相等的用并查集放在一个集合中,最后再判断不相等的是否在同一集合中。由于数很大,我们应该先离散化,不过n<=1000000排序有点卡吧,所以我们尝试用map来记录父亲。#include<bits/stdc++.h>using namespace std;#define N 1000000map <int,int> f;int p[N+原创 2017-08-31 07:42:06 · 276 阅读 · 0 评论 -
bzoj1015 [JSOI2008]星球大战starwar
题目联通快嘛,就用并查集。正着不好处理,反着来十分方便。这也是并查集的一种基本用法啊。#include<bits/stdc++.h>#define N 200000using namespace std;int f[2*N+1];int find(int x){ return f[x]==x?x:f[x]=find(f[x]);}int m,n,x,y;int q,A[2*N原创 2017-08-31 07:38:33 · 201 阅读 · 0 评论 -
bzoj1202 [HNOI2005]狡猾的商人
题目判断真假,直觉说:并查集,so就并查集吧。每个节点记录到父亲的查,合并时简单修改一下就好了。#include<bits/stdc++.h>using namespace std;int T,n,m,l,r,w,flag;int f[101],cnt[101];inline int find(int x){ if(x==f[x])return f[x]; int tmp=原创 2017-08-29 07:41:25 · 341 阅读 · 0 评论