题目地址:HDU 1856

水题。因为标号范围太大,而数据数仅仅有10w,所以要先进行离散化。然后就是裸的并查集了。

代码例如以下:

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <string>
  4. #include <cstring>
  5. #include <stdlib.h>
  6. #include <math.h>
  7. #include <ctype.h>
  8. #include <queue>
  9. #include <map>
  10. #include <set>
  11. #include <algorithm>
  12.  
  13. using namespace std;
  14. int bin[100001], x[100001], y[100001], z[200001], c[200001], cnt, vis[200000];
  15. int find1(int x)
  16. {
  17. return bin[x]==x?x:bin[x]=find1(bin[x]);
  18. }
  19. void merger(int x, int y)
  20. {
  21. int f1=find1(bin[x]);
  22. int f2=find1(bin[y]);
  23. if(f1!=f2)
  24. bin[f2]=f1;
  25. }
  26. int twofen(int x)
  27. {
  28. int high=cnt-1, low=0, mid;
  29. while(low<=high)
  30. {
  31. mid=low+high>>1;
  32. if(c[mid]==x) return mid;
  33. else if(c[mid]<x) low=mid+1;
  34. else high=mid-1;
  35. }
  36. }
  37. int main()
  38. {
  39. int n, i, max1, a, b, f1, f2;
  40. while(scanf("%d",&n)!=EOF)
  41. {
  42. cnt=1;
  43. for(i=0;i<n;i++)
  44. {
  45. scanf("%d%d",&x[i],&y[i]);
  46. z[2*i]=x[i];
  47. z[2*i+1]=y[i];
  48. }
  49. sort(z,z+2*n);
  50. c[0]=z[0];
  51. for(i=1;i<2*n;i++)
  52. {
  53. if(z[i]!=z[i-1])
  54. c[cnt++]=z[i];
  55. }
  56. for(i=0;i<cnt;i++)
  57. bin[i]=i;
  58. for(i=0;i<n;i++)
  59. {
  60. f1=twofen(x[i]);
  61. f2=twofen(y[i]);
  62. merger(f1,f2);
  63. }
  64. memset(vis,0,sizeof(vis));
  65. max1=-1;
  66. for(i=0;i<cnt;i++)
  67. {
  68. int p=find1(bin[i]);
  69. vis[p]++;
  70. if(max1<vis[p])
  71. max1=vis[p];
  72. }
  73. printf("%d\n",max1);
  74. }
  75. return 0;
  76. }

HDU 1856 More is better(并查集+离散化)的更多相关文章

  1. HDU 1856 More is better (并查集)

    题意: 给你两个数代表这两个人是朋友,朋友的朋友还是朋友~~,问这些人组成的集合里面人最多的是多少... 思路: 属于并查集了,我用的是带路径压缩的,一个集合里面所有元素(除了根节点)的父节点都是根节 ...

  2. HDU 1856 More is better(并查集)

    http://acm.hdu.edu.cn/showproblem.php?pid=1856 More is better Time Limit: 5000/1000 MS (Java/Others) ...

  3. HDU HDU1558 Segment set(并查集+判断线段相交)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1558 解题报告:首先如果两条线段有交点的话,这两条线段在一个集合内,如果a跟b在一个集合内,b跟c在一 ...

  4. hdu 1257 小希的迷宫 并查集

    小希的迷宫 Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1272 D ...

  5. hdu 3635 Dragon Balls(并查集应用)

    Problem Description Five hundred years later, the number of dragon balls will increase unexpectedly, ...

  6. <hdu - 1272> 小希的迷宫 并查集问题 (注意特殊情况)

     本题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1272 Problem Description: 上次Gardon的迷宫城堡小希玩了很久(见Probl ...

  7. HDU 4496 D-City(逆向并查集)

    http://acm.hdu.edu.cn/showproblem.php?pid=4496 题意: 给出n个顶点m条边的图,每次选择一条边删去,求每次删边后的连通块个数. 思路: 离线处理删边,从后 ...

  8. HDU 3407.Zjnu Stadium 加权并查集

    Zjnu Stadium Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tota ...

  9. HDU 1213 - How Many Tables - [并查集模板题]

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1213 Today is Ignatius' birthday. He invites a lot of ...

随机推荐

  1. ifconfig 源码

    贴一下ifconfig的源码(它属于net-tool软件包),以备平时查看网络信息的配置. /* * ifconfig This file contains an implementation of ...

  2. 成功为Android系统配上了GNU开发环境

             单击此处获得本文的最新更新 经过一周的艰苦努力,成功为我的小米2手机适配上了全功能的GNU开发环境,完全兼容GNU/LINUX(Android自带的bionic.linker真心不好 ...

  3. RealThinClient学习(一)

    服务端代码: unit RtcHttpServer; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, ...

  4. [Android学习笔记]SeekBar的使用

    一.SeekBar滑动条的使用 xml声明: <SeekBar android:id="@+id/seekbar" android:layout_width="20 ...

  5. 算法起步之Bellman-Ford算法

    原文:算法起步之Bellman-Ford算法 从这篇开始我们开始介绍单源最短路径算法,他是图算法之一,我们前面说的贪心,图的遍历,动态规划都是他的基础,单源最短路径其实说的就是图中节点到节点的最短路径 ...

  6. Linux查看硬盘使用时间等信息

    查看硬盘信息的很多命令,都需要root权限,如果普通用户无法看到信息,请切换至root: 1.查看硬盘使用时间等信息 硬盘使用时间很重要,硬盘理论寿命是3万小时以上 $ sudo smartctl - ...

  7. HDU 4616 Game (搜索)、(树形dp)

    题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=4616 这道题目数据可能比较弱,搜索都可以AC,但是不敢写,哎…… 搜索AC代码: #include & ...

  8. hdu 5071 Chat(模拟)

    题目链接:hdu 5071 Chat 题目大意:模拟题. .. 注意最后说bye的时候仅仅要和讲过话的妹子说再见. 解题思路:用一个map记录每一个等级的妹子讲过多少话以及是否有这个等级的妹子.数组A ...

  9. adm下载器

    netdisk;5.2.7;PC;PC-Windows;6.2.9200;WindowsBaiduYunGuanJia

  10. hdu2844(多重背包)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2844 题意:一位同学想要买手表,他有n种硬币,每种硬币已知有num[i]个.已知手表的价钱最多m元,问 ...