并查集
acblacktea
永不放弃
展开
-
HDOJ-小希的迷宫 水并查集
1.判断所有点的根节点是不是同一个 2.加点时判断两个点之前的祖宗是不是一个#include<cstdio>int am[100005],fa[100005],n,a[100005],b[100005];bool sym;void init(){ for(int i=0;i<100005;i++) { am[i] = 1; fa[i] = i;原创 2016-03-20 19:21:30 · 279 阅读 · 0 评论 -
poj-1611-The Suspects
并查集。。。 怎么分?想起了人民公社化。。。刚开始每个人在一个小社里。后来人际交流嘛各种互相介绍结果开始合成大社。总结和编号为0的人在一个大社的总人数。#include<cstdio>#include<algorithm>int n,m,l,fa[30005],am[30005],faGroup[30005];void init(){ for(int i=0;i<n;i++)原创 2016-03-19 15:19:19 · 247 阅读 · 0 评论 -
poj-2236-Wireless Network
并查集简单题 题意表面是1000*20000的数量级 其实最坏只需要(1+1000)*1000/2次合并就行了。。。#include<cstdio>int n,d;char order[10];struct node{ int x,y;}a[2000];int fa[2000],am[2000],st[2000];void init() { for(int i=1;i<原创 2016-03-19 14:18:09 · 302 阅读 · 0 评论 -
hdu 3038 带权并查集
每次给你 从下标a到下标b和为多少,如果与前面给的合法情况不冲突,即为合法情况否则不考虑为错误情况,统计错误情况个数 Sum[]数组代表它到父亲节点前的和,然后整体算法进行向量合成运算#include<cstdio>#include<algorithm>#include<iostream>using namespace std;int fa[200010],Sum[200010];int原创 2016-07-14 00:13:37 · 291 阅读 · 0 评论 -
poj 1456 Supermarket 贪心 并查集优化
按价值排序后由大到小加进结果,贪心的放在最后的时间里如果某个时间已经占满往前放这时要用并查集维护这天前面没有占满的最后一天#include<cstdio>#include<algorithm>#include<cstring>#include<cstdlib>#include<queue>#define maxn 10015using namespace std;int n;stru原创 2016-07-25 22:12:07 · 295 阅读 · 0 评论 -
poj 1984 带权并查集
根据带权并查集常用的和向量计算差不多的套路进行路径压缩和区间合并#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<cmath>#define maxn 50000using namespace std;int XX[maxn],fa[maxn],YY[maxn];struct原创 2016-07-25 22:14:29 · 745 阅读 · 0 评论 -
poj 2912 Rochambeau
第一次想到的是枚举每个人是裁判然后判断谁是裁判的话剩下几个人的关系不矛盾, 然后满足情况的裁判个数是0矛盾,大于一多组解这点想的是对的 然后打算再跑一遍并查集然后求第二个矛盾且包含唯一裁判的条件即为答案一直wa。。。。 因为带权并查集是维护一些有特定关系的点,然而裁判和别人的关系是不固定的所以不能一起加入并查集 然后贪心 让你判断能找出裁判的最少条件 = 判断出别人不是裁判的最少条件 那就原创 2016-07-25 22:27:53 · 356 阅读 · 0 评论 -
poj 1182 带权并查集模板
刚听带权并查集还以为是prim之类的。。。。结果好抽象(人太傻), 这篇博客http://blog.csdn.net/c0de4fun/article/details/7318642/ 把这题讲的很详细但没解释带权并查集到底怎嘛回事。 普通并查集每个集合的元素就是平等的他们之间没有任何关系除了在一个集合里 带权并查集 一个集合里的元素他们会存在某种约束某种联系也就是权重 这道题的集合里的关原创 2016-07-14 00:08:50 · 459 阅读 · 0 评论 -
poj 1417 True Liars 带权并查集+母函数dp
并查集求出每个集合的与祖宗是同一类人的数量和不是同一类人的数量然后只能选其中之一或不选,然后背包并求具体选择方案 按网上题解写的….#include<cstdio>#include<vector>#include<utility>#include<cstring>#define maxn 605using namespace std;int dp[maxn][maxn],fa[maxn原创 2016-07-20 23:04:59 · 462 阅读 · 0 评论