并查集
Jinx_jinx_again
啊啊啊啊哈哈哈
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
POJ 1308 Is It A Tree?
大意:给出父子关系 看看能不能组成一棵树#include #include #include #include using namespace std;int rank[100005];int set[100005];int v[100005];void init(){ for(int i=1;i<100000;i++) { set[原创 2013-07-08 10:14:47 · 803 阅读 · 0 评论 -
hdu 4619 Warm up 2(并查集)
把覆盖的骨牌放入一个集合中,如果一个集合有cnt 个元素 那么这个集合所在区域最多只能存在 (cnt +1)/2 个元素。#include #include using namespace std;int father[2005];int cnt[2005];int vis[105][105];void init(int n){ int i; for(i=原创 2013-08-26 15:04:02 · 953 阅读 · 0 评论 -
POJ 1733 Parity game (并查集)
题目大意:问m个问题里面 前面有多少个问题是不矛盾的。问题是问区间里的 1 个个数是奇数还是偶数。思路分析:和 hdu 3038 是一个模型。然后判断奇偶用异或就可以了。#include #include #include #include using namespace std;int set[55555];int sum[55555]原创 2014-05-06 22:07:27 · 874 阅读 · 0 评论 -
hdu 2818 Building Block (并查集)
并查集每一个点的信息记录的其实都是根节点的信息。更新的时候不断递归出根节点的信息,然后更新自己的信息就可以了。#include #include #include #include using namespace std;int set[30005],cnt[30005],num[30005];int find(int x){ if(x!=set[x])原创 2014-03-25 22:18:06 · 870 阅读 · 0 评论 -
hdu 3328 Flipper
题目大意:桌面上方了N 张牌,有正面朝上和反面朝上的。然后执行两种操作,R和LR就是把最右边的一堆牌反转一下放在右边数第二个上面也是是如果ABD C执行了R就是CBAD了那么用并查集维护他们在每个堆上的位置,用线段树维护他们的正反状态。最后会合成一个堆,所以他们最后的位置是独一无二的,直接找原创 2014-04-09 20:22:37 · 961 阅读 · 0 评论 -
hdu 3038 How Many Answers Are Wrong(并查集)
题目大意:给出m个询问,问【l,r】之间的和 ,求出有多少次询问不和之前的矛盾的。思路分析:用并查集记录当前节点到根节点的和。#include #include #include #include #define maxn 222222using namespace std;int set[maxn];int sum[maxn];in原创 2014-05-05 20:52:58 · 929 阅读 · 0 评论 -
uva 11987 Almost Union-Find (并查集)
题目大意:三个操作。1. 合并两个集合2.把第一个元素放到第二个集合里3.输出集合的数量和和。。思路分析:要用p记录这个元素所在集合编号,然后用编号建立并查集。#include #include #include #include using namespace std;typedef long long LL;int set[111111原创 2014-06-07 00:38:53 · 1078 阅读 · 0 评论 -
POJ 1703 Find them, Catch them (并查集)
题目大意:有n个罪犯被逮到。他们分别属于两个团伙。而且每个团伙里至少有一个人D a b 说明 a b 不是一个团伙的。A a b 询问a b 是不是一个团伙的。思路分析:开始想的是如果a b 不是一个团伙,就把a 和 n+1 并,b和n+2 并。但是看看下面这组数据就知道是错了。14 4D 1 2D 3 4D 1 4A 1 3不是直接原创 2014-08-03 14:38:47 · 714 阅读 · 0 评论
分享