ACM_并查集
文章平均质量分 82
_天道酬勤_不忘初心
这个作者很懒,什么都没留下…
展开
-
HDU 1856 More is better(求最大秩的集合 )
题目地址:点击打开链接 题意:给一群人挑出来人数最多的一群 思路:求最大秩的集合 AC代码: #include #include #include #include #include #include #include #include #include #include using namespace std; const int maxn = 10000010;原创 2015-09-13 20:54:26 · 374 阅读 · 0 评论 -
HDU 1198 Farm Irrigation(求集合个数)
题目地址:点击打开链接 思路:并查集,是一道好题,主要通过i*n+j来唯一标示每一个格子,其实i乘以大于等于n的每一个都可以唯一标识每一个格子,但考虑到pre数组是从1开始逐渐顺序递增的,所以只能通过乘以n来唯一标识,这样i*n+j的和也是从1开始逐渐顺序递增的 AC代码: #include #include using namespace std; char a[100][100]; in原创 2015-07-19 10:19:57 · 319 阅读 · 0 评论 -
HDU 5326 Work(求每个人的下属,直接和间接)
题目地址:点击打开链接 思路:刚开始思路就错,只记录了直接的下属,没想到下属的下属也属于老大管,深搜就可以解决,看到大神用并查集也A了,太叼了 AC代码1: #include #include using namespace std; int a[110],visit[110],n; int dfs(int up) { int i,sum = 0; for(i=1; i原创 2015-07-31 10:04:31 · 471 阅读 · 0 评论 -
HDU 5441 Travel(求各个集合里的秩能组合多少对,只能在一个集合里组合)
题目地址:点击打开链接 题意:每2个城市间有一个权值,还有每次询问会给一个权值,城市间的权值小于询问的权值即可以走,问某个人能走多少对城市,注意(a,b),(b,a)算一对不同的城市 思路:刚开始用数组存储点和点的距离,然后每次搜强连通分量,搜出来强连通分量的个数不就是每个集合里面的个数么,假如说一个集合里面有n个值,那么总共有n(n-1)对,好理解吧,每个城市和其余城市连一次,不用除以2,因原创 2015-09-14 10:45:31 · 672 阅读 · 0 评论 -
HDU 1811 Rank of Tetris(拓扑排序确定排名,排名有重复的情况)
题目地址:点击打开链接 思路: 拓扑排序的两个性质: ①如果一次入队入度为零的点大于1则说明拓扑排序序列不唯一 ②如果排序的总个数小于给定的个数,则说明存在回路 用并查集把成绩相等的人放在一起。 然后根据关系,把他们连起来。 然后拓扑排序。 如果拓扑排序结束之后,拓扑到的边数和输入的边数不同,那么肯定出现环了,那么就是信息错误。0 否则,如果某个时刻出现两个点的入度都为0原创 2015-09-15 20:27:40 · 417 阅读 · 0 评论 -
HDU 5438 Ponds(拓扑排序+并查集)
题目地址:点击打开链接 题意:p个顶点m条边构成的无向图,每次删除边数小于等于1的节点,和他相连的边消失,一直按照此规则删除点,求最后剩下的几个集合中,点数为奇数的价值和 思路:先拓扑排序不断删除点,用并查集求出集合,然后再求点数为奇数的集合的价值总和,价值总和超int了,用long long 存 AC代码: #include #include #include #include原创 2015-09-16 16:49:55 · 441 阅读 · 0 评论 -
杭电校赛(油菜花王国)
油菜花王国 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2189 Accepted Submission(s): 567 Problem Description 程序设计竞赛即将到来,作为学校ACM集训队主力原创 2015-12-02 19:53:32 · 433 阅读 · 0 评论 -
HDU 1232 畅通工程(求集合个数)
思路:并查集模板 AC代码:原创 2015-07-18 00:12:29 · 457 阅读 · 0 评论