這是乙個簡單的遊戲,在乙個n*n的矩陣中,找n個數使得這n個數都在不同的行和列裡並且要求這n個數中的最大值和最小值的差值最小。
輸入乙個整數t表示t組資料。對於每組資料第一行輸入乙個正整數n(1<=n<=100)表示矩陣的大小。
接著輸入n行,每行n個數x(0<=x<=100)。
對於每組資料輸出乙個數表示最小差值。
1234567
891011
1213
1415
1617
1819
2021
2223
2425
2627
2829
3031
3233
3435
3637
3839
4041
4243
4445
4647
4849
5051
5253
5455
5657
5859
6061
6263
#include#define init(a,b) memset(a,b,sizeof(a))
#define ll long long
using
namespace
std;
const
int inf=0x3f3f3f3f;
const
int maxn=1e2+7;
const
int mod=1e9+7;
int line[maxn][maxn],vis[maxn],match[maxn];
int n,minnum,maxnum,minsub,maxsub,midsub,p;
bool
find
(int x)}}
return
false;
}bool
hungary
()return
true;
}int
main()}
minsub=0,maxsub=maxnum-minnum;
int ans=0;
while(minsub<=maxsub)
}if(flag)maxsub=midsub-1,ans=midsub;
else minsub=midsub+1;
}printf("%d\n",ans);
}return0;}
HDU 2236 無題II 二分 最大匹配
題目 problem description 這是乙個簡單的遊戲,在乙個n n的矩陣中,找n個數使得這n個數都在不同的行和列裡並且要求這n個數中的最大值和最小值的差值最小。input 輸入乙個整數t表示t組資料。對於每組資料第一行輸入乙個正整數n 1 n 100 表示矩陣的大小。接著輸入n行,每行n...
HDU 2236 無題II 二分 最大匹配
題意 在乙個n n的矩陣中,找n個數使得這n個數都在不同的行和列裡並且要求這n個數中的最大值和最小值的差值最小。分析 二分列舉差值,如果滿足完全匹配則該差值符合。include include define clr x memset x,0,sizeof x int g 105 105 int li...
POJ 2289 二分 匈牙利
題意 把 n 個人分成 m 組,給出 n 個人各自可選的組別集合,求一種合法的分配方案,使得人數最多的組的人數最少 分析 最多最少,一般二分跑不了,然後求分配就匈牙利稍微變形就可以了 變形是為了適應二分 include include include include using namespace ...