无题II

Time Limit: 2000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1303    Accepted Submission(s): 583

Problem Description
这是一个简单的游戏,在一个n*n的矩阵中,找n个数使得这n个数都在不同的行和列里并且要求这n个数中的最大值和最小值的差值最小。
 
Input
输入一个整数T表示T组数据。
对于每组数据第一行输入一个正整数n(1<=n<=100)表示矩阵的大小。
接着输入n行,每行n个数x(0<=x<=100)。
 
Output
对于每组数据输出一个数表示最小差值。
 
Sample Input
1
4
1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4
 
Sample Output
3
 
Author
xhd
 #include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<cmath>
using namespace std; #define INF 99999999
int g[][];
int mk[];
int cy[];
int t;
int n;
int inmax;
int inmin;
int mmmin;
int mmmax; void init()
{
memset(g,,sizeof(g));
memset(mk,,sizeof(mk));
memset(cy,0xff,sizeof(cy));
} int path(int u)
{
int v;
for(v=;v<=n;v++)
{
if(g[u][v]>=mmmin&&g[u][v]<=mmmax&&!mk[v])
{
mk[v]=;
if(cy[v]==-||path(cy[v]))
{
cy[v]=u;
return true;
}
}
}
return false;
} int maxmatch()
{
int i;
memset(cy,0xff,sizeof(cy));
for(i=;i<=n;i++)
{
memset(mk,,sizeof(mk));
if(!path(i))
{
return false;
}
}
return true;
} int main()
{
scanf("%d",&t);
while(t--)
{
init();
scanf("%d",&n);
int i,j;
inmax=-INF,inmin=INF;
for(i=;i<=n;i++)
{
for(j=;j<=n;j++)
{
scanf("%d",&g[i][j]);
if(g[i][j]>inmax)inmax=g[i][j];
if(g[i][j]<inmin)inmin=g[i][j];
}
}
//二分差值
int rmax=inmax-inmin;
int rmin=;
while(rmin<=rmax)
{
int mid=(rmin+rmax)>>;
for(i=;i<=inmax;i++)
{
mmmin=i;
mmmax=i+mid;
if(maxmatch())
break;
}
if(maxmatch()) //表示这个区间段在mmmin在mmmax之间
rmax=mid-; //区间缩小
else
rmin=mid+; //不满足扩大区间
}
printf("%d\n",rmax+);
}
return ;
}

无题II的更多相关文章

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

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

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

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

  3. 无题II hdu 2236(二分枚举区间)

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

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

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

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

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

  6. HDU-2236 无题II

    选取不同列不同行的N个数...明摆着叫你二分匹配 二分答案,然后枚举边的范围并跑匈牙利,以此判断答案范围. #include <cstdlib> #include <cstdio&g ...

  7. hdu2236 无题II 最大匹配 + 二分搜索

    中文题目,题意大家都明白. 看到“不同的行和列”就觉得要用二分匹配来做.要求最大值与最小值的差值最小,是通过枚举边的下限和上限来完成. 枚举过程是这样的,在输入的过程可以记录下边权的最大值MAX和最小 ...

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

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

  9. HDU 2236 无题II 题解

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

随机推荐

  1. 实列+JVM讲解类的实列化顺序

    刨根问底---类的实列化顺序 开篇三问 1什么是类的加载,类的加载和类的实列有什么关系,什么时候类加载 2类加载会调用构造函数吗,什么时候调用构造函数 3什么是实列化对象,实列化的对象有什么东西. 我 ...

  2. 各种sql驱动的相关配置

    一.SqlServer数据库 1.sqlServer{2005,2008}软件 dataDriverName=com.microsoft.sqlserver.jdbc.SQLServerDriver ...

  3. Linux下修改时间及date使用

    [root@host1 ~]# date #显示时间 2017年 06月 01日 星期四 17:02:59 CST 以指定格式显示时间: [root@host1 ~]# date +%Y%m%d 20 ...

  4. TFS版本对应

    原文: MSDN Operating systems TFS can be installed on a Windows server or client operating system. TFS ...

  5. Atman开发实习生的笔试题

    坐标:山东 编程题(限时30分钟)如何判断一个字符串是否为合法的IP地址.要求:1. 不能使用正则表达式和自带的库函数.2. 列出全部测试用例,并给出原因.3. 把代码的后缀名改成txt后上传,不用压 ...

  6. BZOJ 4919 (树上LIS+启发式合并)

    题面 给定一棵n个节点的有根树,编号依次为1到n,其中1号点为根节点.每个点有一个权值v_i. 你需要将这棵树转化成一个大根堆.确切地说,你需要选择尽可能多的节点,满足大根堆的性质:对于任意两个点i, ...

  7. BZOJ 1085(IDA*)

    题面 传送门 分析 首先,直接搜索肯定会TLE 很容易想到用迭代加深的方法,限定搜索深度 但是,这样仍然不够,需要用启发式的方法优化 我们设计一个估价函数f(x)=g(x)+h(x)f(x)=g(x) ...

  8. 显式Mapping设置与常见参数介绍

    原文:显式Mapping设置与常见参数介绍 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/ ...

  9. 在navcat中清空数据后,设置id归零方法

    写后台完成后,需要清空Mysql数据库中的测试数据,但是后面新增的数据,一直是以原来所删除数据的最大id为增量基本,比如,对于一些id敏感的项,十分不便,如图 原有10条数据,清空后,新增一两条,手动 ...

  10. RabbitMQ相关使用命令

    启动:rabbitmq-server -detached 停止:rabbitmqctl stop 状态:rabbitmqctl status 查看所有用户rabbitmqctl list_users ...