(二分匹配“匈牙利算法”)无题II --HDU --2236
链接:
http://acm.hdu.edu.cn/showproblem.php?pid=2236
代码:
#include<cstdio>
#include<cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
using namespace std;
#define N 105
#define INF 0xffffff ///匹配
///只需要用二分找一个区间,
///然后不断枚举这个区间是否可以达到最大匹配,
///一直二分到答案为止。 int G[N][N], ly[N];
int Max, Min, n;
bool used[N]; 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))
ans ++ ;
}
return ans;
} int main()
{
int t;
scanf("%d", &t);
while(t--)
{
int i, j, MinL=INF, MaxR=-INF; 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的更多相关文章
- hdu 2444 The Accomodation of Students(二分匹配 匈牙利算法 邻接表实现)
The Accomodation of Students Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K ( ...
- 【01染色法判断二分匹配+匈牙利算法求最大匹配】HDU The Accomodation of Students
http://acm.hdu.edu.cn/showproblem.php?pid=2444 [DFS染色] #include<iostream> #include<cstdio&g ...
- 无题II HDU - 2236 【二分图+二分答案】
题目 这是一个简单的游戏,在一个n*n的矩阵中,找n个数使得这n个数都在不同的行和列里并且要求这n个数中的最大值和最小值的差值最小. Input 输入一个整数T表示T组数据. 对于每组数据第一行输入一 ...
- 无题II hdu 2236(二分枚举区间)
分析:只需要用二分找一个区间,然后不断枚举这个区间是否可以达到最大匹配,一直二分到答案为止. 代码: =============================================== ...
- hdu 2063 (二分匹配 匈牙利算法)
过山车 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- HDU-3729 二分匹配 匈牙利算法
题目大意:学生给出其成绩区间,但可能出现矛盾情况,找出合理组合使没有说谎的人尽可能多,并按maximum lexicographic规则输出组合. //用学生去和成绩匹配,成绩区间就是学生可以匹配的成 ...
- 【HDU 2255】奔小康赚大钱 (最佳二分匹配KM算法)
奔小康赚大钱 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Subm ...
- HDU 5943 Kingdom of Obsession 【二分图匹配 匈牙利算法】 (2016年中国大学生程序设计竞赛(杭州))
Kingdom of Obsession Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Oth ...
- USACO 4.2 The Perfect Stall(二分图匹配匈牙利算法)
The Perfect StallHal Burch Farmer John completed his new barn just last week, complete with all the ...
随机推荐
- drop user和drop user cascade的区别
SQL> delete user itp2;delete user itp2 *第 1 行出现错误:ORA-00903: 表名无效 SQL> drop user itp2;dr ...
- 迷你MVVM框架 avalonjs 学习教程10、样式操作
一般情况下我们通过设置类名就可以改变元素的样式,但涉及到动画部分,就一定需要设置内联样式了,因此有了ms-css.*ms-css*的用法为ms-css-样式名="样式值", 如ms ...
- Containerpilot 配置文件 之 Watches
watch是在consul进行监视的服务配置. watch轮询服务的状态,并在服务变得健康,变得不健康或者实例数量发生变化时发出事件. 请注意,watch不包括行为; watch只发出事件,以便job ...
- JDBC远程连接数据库
使用jdbc远程连接数据库(非本地数据库)出现的问题可用的解决方法: 1.修改mysql配置文件 配置文件中注释掉 bind-address=127.0.0.1 2.修改数据库 登入mysql后,更改 ...
- C# split分割多个字符
string[] myAgent = agentInfo.Split(new string[] { "$#$" }, StringSplitOptions.None);
- centos云服务器安装Python3记录
题记 购买了一个月的服务器和公网ip,计划用Python与Nginx写一个web服务,于是踏上了漫漫的摸索之路. 行程 步骤 1.本地ssh连接. 2.mkdir /usr/local/python3 ...
- .net VS2008 时间加减,时间段,时间格式化到秒
举个例子: DateTime time1 = DateTime.Now; DateTime time2 = time1.AddDays(1); time1是当前时间,time2比当前时间多一天.也就是 ...
- [leetcode]146. LRU CacheLRU缓存
Design and implement a data structure for Least Recently Used (LRU) cache. It should support the fol ...
- 观察者模式 DataObserver
DatasetObserver是Observer的一个子类 针对于adapter设计的 当调用notifydatasetchanged的时候就会触发回调的方法 adapter.registerObse ...
- session总结
1.session是服务器端内存中的一块存储空间. 2.不同的浏览器窗口对应着不同的Session对象,两者的关系由Session ID来进行维护. 3.session的生命周期是以最后一次请求到达服 ...