
排序并查集
文章平均质量分 80
小冷在努力
这个作者很懒,什么都没留下…
展开
-
LA 3644 X-PIosives
题意分析: 有一些简单化合物,每个化合物都由两种元素组成。现在把这些化合物装车。如果车上存在k个简单化合物,正好包含k种元素,那么它们将组成一个易爆的混合物。当你拿到一个化合物时,你就要判断是否装车。输出有多少个没有装车的化合物。如何把每种元素看成是一个点的话,那么每个化合物就是一条线段,现在有k个点,k个线段,那么这就组成了一个封闭的图形,由于并查集可以用来维护图的连通分量集合。原创 2014-12-19 00:02:50 · 338 阅读 · 0 评论 -
poj 2236 Wireless Network 并查集
蛋疼,无比的蛋疼。。。。。这道题竟然花了一天的时间来做,考啊。。。。最后看了别人写的代码,大致思路是一致的,唯一的不同的一个点就是合并的时候,我把第i个点的父亲节点直接赋值成了另外一个点的父亲节点。。。。 这道题的大致思路是:就是给你N个点的坐标,O表示那些点能用,S是哪两个点是连通的。把能用的点标记出来,当下个能用的点出现时,找到当下这个点与那些标记出来的点连通的点,找到各自的父亲节点root原创 2015-03-15 20:03:41 · 321 阅读 · 0 评论 -
poj 1988 Cube Stacking
不多说了,傻逼的一道题。。。#include const int M = 30005; int pa[M],cnt[M],dist[M]; void Init() { for (int i = 1;i <= M;i ++) pa[i] = i,cnt[i] = 1,dist[i] = 0; } int findset (int x) { if (x != pa原创 2015-03-15 23:56:15 · 346 阅读 · 0 评论 -
LA4329 Ping pong(树状数组与组合原理)
看了这道题感觉自己收获很大,这道题的思路就很奇葩,一般人不容易想到。对于第i个人,只要遍历出从1到i-1技能比他小的人ci,从i+1到n遍历出技能比他小的人di,那么对于技能为ai的人来说,可以组织比赛ci*(n-i-di)+di*(i-1-ci);这里的ci,di通过树状数组可以得到。通过吧1到i-1的技能添加到ci中,可以统计出比ai小的技能的总数,同理di也是这样。 代码如下:#inclu原创 2015-03-17 15:18:56 · 433 阅读 · 0 评论 -
poj 1838 Banana
题意分析: 其实这道题蛮容易理解的,就是在平面上给你N个点,水平和垂直方向为相邻,这些相邻的点可以看成一个区域。现在可以连同k个区域,求在这k个区域内,点的个数尽量多。如果你对并查集和熟悉的话,你会发现其实这道题蛮容易的。因为并查集讲的就是动态连通性。 代码如下: #include #include #include #include #include using namespace std原创 2014-12-15 00:26:46 · 387 阅读 · 0 评论