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

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

#include<stdio.h>
#include<string.h> const int MAXN = ;
const int oo = 1e9+; int G[MAXN][MAXN], Ly[MAXN];
int Max, Min, N;
bool used[MAXN]; bool Find(int i)
{
for(int j=; j<=N; j++)
{
if(!used[j] && G[i][j] >= Min && G[i][j] <= Max)
{
used[j] = true; if(!Ly[j] || Find(Ly[j]))
{
Ly[j] = i;
return true;
}
}
} return false;
}
int XYL()
{
memset(Ly, , sizeof(Ly));
int ans = ; for(int i=; i<=N; i++)
{
memset(used, false, sizeof(used));
if(Find(i) == true)
ans++;
} return ans;
} int main()
{
int T; scanf("%d", &T); while(T--)
{
int i, j, MinL=oo, MaxR=-oo; scanf("%d", &N); for(i=; i<=N; i++)
for(j=; j<=N; j++)
{
scanf("%d", &G[i][j]);
if(MinL > G[i][j])MinL = G[i][j];
if(MaxR < G[i][j])MaxR = G[i][j];
} int L=, R=MaxR-MinL, ans=; while(L <= R)
{
int Mid = (R+L)>>; for(i=; i<=MaxR-Mid; i++)
{
Min = i, Max = i+Mid; if(XYL() == N)break;
} if(i <= MaxR-Mid)
{
ans = Mid;
R = Mid-;
}
else
L = Mid+;
} printf("%d\n", ans);
} return ;
}

无题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. (转)[开发笔记]-js判断用户的浏览设备是移动设备还是PC

    <script type="text/javascript"> function browserRedirect() { var sUserAgent = naviga ...

  2. php输出echo、print、print_r、printf、sprintf、var_dump的区别比较

    本篇文章是对php输出echo.print.print_r.printf.sprintf.var_dump的区别进行了详细的分析介绍,需要的朋友参考下     用.net开发已经5年了,最近突然想接触 ...

  3. Delphi ControlCount和ComponentCount的区别

    ComponentCount指打开的窗体所拥有的控件个数,包含所有子组件.孙组件(子组件内的子组件) 如上图,Form1的ComponentCount是13,而Panel1的ComponentCoun ...

  4. iOS打包ipa 让别人设备安装你的App

    首先推荐一本书<一步一步学习iOS 5编程(第二版) – PDF 中文版>在一本学习IOS入门很不错的书籍,目前,这是第一本介绍iOS 5.x 和 Xcode 4.3 的中文版书籍,尤其适 ...

  5. javascript--”原路返回“

    css代码: <style type="text/css"> * { margin: 0px; padding: 0px; font-family: "mic ...

  6. 【转】 C语言自增自减运算符深入剖析

    转自:http://bbs.csdn.net/topics/330189207 C语言的自增++,自减--运算符对于初学者来说一直都是个难题,甚至很多老手也会产生困惑,最近我在网上看到一个问题:#in ...

  7. Android Context作用

    Context 用于访问全局信息的接口 App的资源: strings, drawable资源等等 工程代码:LearnContext.zip ---------------------------- ...

  8. 误差逆传播(error BackPropagation, BP)算法推导及向量化表示

    1.前言 看完讲卷积神经网络基础讲得非常好的cs231后总感觉不过瘾,主要原因在于虽然知道了卷积神经网络的计算过程和基本结构,但还是无法透彻理解卷积神经网络的学习过程.于是找来了进阶的教材Notes ...

  9. 解决方案-Microsoft Visual Studio 2012 已停止工作

    问题: 根本解决方案: 用管理员模式运行. 找到软件的安装目录 \Microsoft Visual Studio 11.0\Common7\IDE\devenv.exe 然后如何保存管理员权限运行呢? ...

  10. BZOJ 1031 字符加密

    Description 喜欢钻研问题的JS 同学,最近又迷上了对加密方法的思考.一天,他突然想出了一种他认为是终极的加密办法:把需要加密的信息排成一圈,显然,它们有很多种不同的读法.例如下图,可以读作 ...