HDOJ 2236 - 无题II 暴力+二分图最大匹配判断
来源:互联网 发布:开淘宝店铺经验 编辑:程序博客网 时间:2024/05/16 07:53
题意
这是一个简单的游戏,在一个n*n的矩阵中,找n个数使得这n个数都在不同的行和列里并且要求这n个数中的最大值和最小值的差值最小。
题解
枚举最大最小数的差值(也可以二分)...再枚举最小值为多少..推出最大值为多少..构图..用二分图最大匹配来判断是否有解...
总结...一类关于每行每列只能取一个数的问题..可以考虑二分图最大匹配...
Program:
#include<iostream>#include<stdio.h>#include<algorithm>#include<cmath>#include<stack>#include<string.h>#include<queue>#define ll long long#define esp 1e-5#define MAXN 105#define MAXM 50000000#define oo 100000007using namespace std; int n,match[MAXN],Min,Max,A[MAXN][MAXN];bool used[MAXN],g[MAXN][MAXN];bool dfs(int x){ for (int i=1;i<=n;i++) if (!used[i] && g[x][i]) { used[i]=true; if (!match[i] || dfs(match[i])) { match[i]=x; return true; } } return false;}bool getmax(){ int sum=0; memset(match,0,sizeof(match)); for (int i=1;i<=n;i++) { memset(used,false,sizeof(used)); if (!dfs(i)) return false; } return true;}int getans(){ int Min,Max,ans,x,y; for (ans=0;ans<=100;ans++) for (Min=0;Min<=100-ans;Min++) { Max=Min+ans; memset(g,false,sizeof(g)); for (y=1;y<=n;y++) for (x=1;x<=n;x++) if (A[y][x]>=Min && A[y][x]<=Max) g[y][x]=true; if (getmax()) return ans; }}int main() { int cases,i,j,anss; scanf("%d",&cases); while (cases--) { scanf("%d",&n); for (i=1;i<=n;i++) for (j=1;j<=n;j++) scanf("%d",&A[i][j]); printf("%d\n",getans()); } return 0; }
- HDOJ 2236 - 无题II 暴力+二分图最大匹配判断
- hdoj 2236 无题II 【二分图匹配&&匈牙利算法】
- Hdu 2236 无题II 最大匹配+二分
- HDU 2236 无题II 二分+最大匹配
- hdu2236 无题II (二分+最大匹配)
- hdu 2236 无题II(二分法,枚举,二分图最大匹配)
- HDU 2236 无题II(二分图匹配+二分)
- 【HDU】2236 无题II 二分+二分匹配
- hdu 2236 无题II 二分 + 二分匹配
- hdu 无题II(二分差值+最大匹配)
- hdoj 2236 无题II
- HDU2236 无题II 二分匹配+二分枚举
- hdu 2336 无题II 【二分+二分匹配】
- hdoj 1507 二分图的最大匹配
- HDOJ-1281二分图最大匹配
- 二分图最大匹配 hdoj 1045
- hdoj 过山车 2063 (二分图最大匹配)
- #HDU2236#无题II(二分 + 匈牙利匹配)
- Get all tables' name from sqlite database
- 问题集锦
- CentOS环境 升级Python2.6.6至2.7.5
- ext中ArrayStore,JsonStore,XmlStore的用法
- vs2010中使用Nunit测试c#代码结果的正确性
- HDOJ 2236 - 无题II 暴力+二分图最大匹配判断
- C#面向对象中方法隐藏
- 《逆水寒》
- 时间序列ARIMA模型相关
- 【有趣的面试算法题】之三 求最大子序列和/积问题,关注起点和终点
- hdu 1003 Max Sum
- 11.用户基本操作
- 一不小心踏进Android开发: TPMini大眼睛使用PS3蓝牙手柄 文章索引以及其它
- C++中this指针的用法详解