并查集
Jason_Wcz
这个作者很懒,什么都没留下…
展开
-
poj 2513 Colored Sticks (字典树,并查集,欧拉回路)
N根木棍,两头都有颜色,拼接的时候,必须将颜色一致的接在一起,问能否把全部木棍拼成一整根? 1.颜色映射到数字 map效率低,超时。因此用字典树。 2.判断能否形成通路 条件:所有点的度数都是偶数,或者只有两个点的度数是奇数 (dad是并查集的数组,判断是否全部连通) for(int i=0;i<color;i++) { if(dad[i]==-1) dadcnt++;原创 2017-10-05 12:01:46 · 180 阅读 · 0 评论 -
HDU 1233 还是畅通工程 (最小生成树、并查集)
VJ题目链接 题意题目都很简单,最小生成树,然后用并查集来判断是否已经连入图中 import java.util.PriorityQueue; import java.util.Scanner; class Road implements Comparable{ int a,b,dis; public Road(int a,int b,int dis) { this.a=a; t原创 2017-11-13 20:25:55 · 165 阅读 · 0 评论 -
POJ 1456 Supermarket
VJ题目地址 题意:n种商品,每种都有一个限定卖出的时间,如果在限定时间内没有卖出,则无法再卖出。每个单位时间内,只允许卖出一件商品。求给出的这组商品利润最高多少。 解题思路是用并查集来处理区间,这题的区间是卖出时间的限制。 首先取得最大的商品时间,然后在这个最大区间内,初始化dad数组,使每个时间都指向自己,这表明这个时间没有被使用。 当这个时间有商品卖出时,则需要把这个时间 t 指向原创 2017-11-16 11:17:37 · 130 阅读 · 0 评论 -
HDU 3974 Assign the task (并查集 || 线段树)
题目链接虽然挂在线段树的题集里,但是能一眼看出也是并查集的题。本来准备就用线段树做,可是,想了半天不知道怎么建树。。。就先用并查集过吧。等忙完期末项目,回来再看看怎么用线段树做。并查集代码:import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java....原创 2017-12-19 14:04:29 · 131 阅读 · 0 评论 -
codevs 1069 关押罪犯 (虚点并查集)
题目链接思路:首先很容易想到,先按怒气值从高到低排序,然后一个个取出来,分成两拨,这样就能使最后的结果尽量小。这样看来就要维护两个集合,但是事实上并查集不是用来分割集合的。因此,可以用到虚点的概念,给每个罪犯都建立要给虚点,而这个虚点是跟自身对立的,意思就是假如A和B要分开,就把A和B’放入一个集合,把A’和B放入一个集合,来表示AB是分开的(也能理解为A和B的敌人是一伙的,即敌人的敌人就是朋友)...原创 2018-03-08 13:03:03 · 319 阅读 · 0 评论 -
PAT (Advanced) 1004 (简单并查集)
#include<iostream> #include<cstring> #include<cstdlib> #include<cstdio> #include<algorithm> using namespace std; int n, m; int dad[105]; int ans[105]; int maxDep = 0; vo...原创 2018-07-26 21:52:57 · 154 阅读 · 0 评论 -
PAT (Advanced Level) 1034 Head of a Gang (带权并查集+离散化)
这题感觉很不错,map、set、vector、pair的合理利用,对数据的妥善处理。值得好好记录下。 虽然题目本身思路比较简单,但是如果不能对数据进行好的处理,写起来还是相当麻烦的,我就是在倒腾了半天之后,感觉越写越乱,然后百度看到了一个很不错的方法,就学习了他的方法。原博链接 首先,要使用并查集我们必须要对name进行离散化,我竟然一开始想到的是用36进制转十进制。。。现在的方法,也是一种应...原创 2018-08-23 20:48:33 · 121 阅读 · 0 评论