分析:只需要用二分找一个区间,然后不断枚举这个区间是否可以达到最大匹配,一直二分到答案为止。
 
代码:

====================================================================================

  1. #include<stdio.h>
  2. #include<string.h>
  3.  
  4. const int MAXN = ;
  5. const int oo = 1e9+;
  6.  
  7. int G[MAXN][MAXN], Ly[MAXN];
  8. int Max, Min, N;
  9. bool used[MAXN];
  10.  
  11. bool Find(int i)
  12. {
  13. for(int j=; j<=N; j++)
  14. {
  15. if(!used[j] && G[i][j] >= Min && G[i][j] <= Max)
  16. {
  17. used[j] = true;
  18.  
  19. if(!Ly[j] || Find(Ly[j]))
  20. {
  21. Ly[j] = i;
  22. return true;
  23. }
  24. }
  25. }
  26.  
  27. return false;
  28. }
  29. int XYL()
  30. {
  31. memset(Ly, , sizeof(Ly));
  32. int ans = ;
  33.  
  34. for(int i=; i<=N; i++)
  35. {
  36. memset(used, false, sizeof(used));
  37. if(Find(i) == true)
  38. ans++;
  39. }
  40.  
  41. return ans;
  42. }
  43.  
  44. int main()
  45. {
  46. int T;
  47.  
  48. scanf("%d", &T);
  49.  
  50. while(T--)
  51. {
  52. int i, j, MinL=oo, MaxR=-oo;
  53.  
  54. scanf("%d", &N);
  55.  
  56. for(i=; i<=N; i++)
  57. for(j=; j<=N; j++)
  58. {
  59. scanf("%d", &G[i][j]);
  60. if(MinL > G[i][j])MinL = G[i][j];
  61. if(MaxR < G[i][j])MaxR = G[i][j];
  62. }
  63.  
  64. int L=, R=MaxR-MinL, ans=;
  65.  
  66. while(L <= R)
  67. {
  68. int Mid = (R+L)>>;
  69.  
  70. for(i=; i<=MaxR-Mid; i++)
  71. {
  72. Min = i, Max = i+Mid;
  73.  
  74. if(XYL() == N)break;
  75. }
  76.  
  77. if(i <= MaxR-Mid)
  78. {
  79. ans = Mid;
  80. R = Mid-;
  81. }
  82. else
  83. L = Mid+;
  84. }
  85.  
  86. printf("%d\n", ans);
  87. }
  88.  
  89. return ;
  90. }

无题II hdu 2236(二分枚举区间)的更多相关文章

  1. (二分匹配“匈牙利算法”)无题II --HDU --2236

    链接: http://acm.hdu.edu.cn/showproblem.php?pid=2236 代码: #include<cstdio> #include<cstring> ...

  2. 无题II HDU - 2236 【二分图+二分答案】

    题目 这是一个简单的游戏,在一个n*n的矩阵中,找n个数使得这n个数都在不同的行和列里并且要求这n个数中的最大值和最小值的差值最小. Input 输入一个整数T表示T组数据. 对于每组数据第一行输入一 ...

  3. POJ 3189——Steady Cow Assignment——————【多重匹配、二分枚举区间长度】

     Steady Cow Assignment Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I ...

  4. hdu 4430 二分+枚举

    /* 二分+枚举 枚举k会超时,枚举r还要优化,有可能会超64 */ #include<stdio.h> #include<math.h> #define ll __int64 ...

  5. HDU 2236:无题II(二分搜索+二分匹配)

    http://acm.hdu.edu.cn/showproblem.php?pid=2236 题意:中文题意. 思路:先找出最大和最小值,然后二分差值,对于每一个差值从下界开始枚举判断能不能二分匹配. ...

  6. acwing 102 -利用二分枚举区间平均值

    我真的是服了,看了一晚上发现居然,,,,, 上图吧,话说有人评论没... 对于结果来说,不一定要枚举有序数列,感觉这是一种猜结果的方法,只不过特别精确,令人发指 #include<cstdio& ...

  7. LightOj 1088 - Points in Segments (二分枚举)

    题目链接: http://www.lightoj.com/volume_showproblem.php?problem=1088 题目描述: 给出一个n位数升序排列的数列,然后q个查询,每个查询问指定 ...

  8. HDU 2236 无题II(二分图匹配+二分)

    HDU 2236 无题II 题目链接 思路:行列仅仅能一个,想到二分图,然后二分区间长度,枚举下限.就能求出哪些边是能用的,然后建图跑二分图,假设最大匹配等于n就是符合的 代码: #include & ...

  9. Hdu 2236 无题II 最大匹配+二分

    题目链接: pid=2236">Hdu 2236 解题思路: 将行和列理解为二分图两边的端点,给出的矩阵即为二分图中的全部边, 假设二分图能全然匹配,则说明 不同行 不同列的n个元素 ...

随机推荐

  1. SQLite 入门教程(三)好多约束 Constraints

    一.约束 Constraints 在上一篇随笔的结尾,我提到了约束, 但是在那里我把它翻译成了限定符,不太准确,这里先更正一下,应该翻译成约束更贴切一点. 那么什么是约束呢? 我们在数据库中存储数据的 ...

  2. tomcat的webapp下的root文件夹的作用是什么

    1.基本一样..只是表示不同的tomcat的http路径而已. root目录默认放的是tomcat自己的一个项目,如:http://localhost:8080/默认访问root项目 对于webapp ...

  3. spring-quartz普通任务与可传参任务

    两者区别与作用: 普通任务:总调度(SchedulerFactoryBean)--> 定时调度器(CronTriggerFactoryBean) --> 调度明细自定义执行方法bean(M ...

  4. Spring 中各种通知

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  5. SGU 122.The book (哈密顿回路)

    题目描述 有一群人从1到N标号,而且这群人中每个人的朋友个数不少于 (N+1)/2 个. 编号为1的人有一本其他人都想阅读的书. 写一个程序,找到一种传阅顺序使得书本只经过每个人手中一次,并且一个人只 ...

  6. stat 的名字接口

    File::stat - stat 的名字接口 名字为:dev, ino, mode, nlink, uid, gid, rdev, size, atime, mtime, ctime, blksiz ...

  7. php数组(array)输出三种形式

    $bbbb=array("11"=>"aaa","22"=>"bbb"); //只能输出值value不能输出 ...

  8. WPF自定义DataGrid分页控件

    新建Custom Control,名:PagingDataGrid 打开工程下面的Themes\Generic.xaml xaml里面代码替换如下 <Style x:Key="{x:T ...

  9. 使用Thinkphp框架开发移动端接口

     本文给大家分享的是使用thinkphp框架开发移动端接口的2种方法,一种是开发API,另外一种是实现移动端访问自动切换移动主题模板,从而实现伪app访问,下面我们就来详细看下如何实现吧. 方案一:给 ...

  10. PhotoSwipe.js 相册展示插件学习

    PhotoSwipe.js官网:http://photoswipe.com/,在这个网站上可以下载到PhotoSwipe的文件以及相关的例子. 这个组件主要是用来展示图片.相册用的,还是很实用的. 一 ...