POJ 2289 二分 匈牙利

2021-10-06 06:15:03 字數 902 閱讀 3689

題意:把 n 個人分成 m 組,給出 n 個人各自可選的組別集合,求一種合法的分配方案,使得人數最多的組的人數最少

分析:最多最少,一般二分跑不了,然後求分配就匈牙利稍微變形就可以了(變形是為了適應二分)

**:

#include

#include

#include

#include

using

namespace std;

#define pb push_back

#define rep(i,a,b) for(int i=a;i<=b;i++)

#define ll long long

const

int n =

1000+10

;vector<

int>g[n]

;string s;

int n,m;

int match[n]

[n],cnt[n]

;//cnt[i]表示當前第i組已經分配了多少人

//match[i][j]表示第i組第j個人的編號

bool vis[n]

;bool

dfs(

int u,

int lim)

else}}

return0;

}intkm(

int lim)

return res;

}int

main()

g[i].pb

(num);}

int l=

1,r=n,ans;

while

(l<=r)

cout<}}

poj 2289 網路流 and 二分查詢

include include include include define n 2000 define m 1000010 define inf 1 30 using namespace std struct edgeedge m int index n d n gap n e,list n 51...

hdu 2289 基礎二分

本以為二分的題嘛,有了模板一切都好說,這道題發出來其實有抄襲的嫌疑,算是給自己寫的糾正性文章了,原來的想法每次二分的條件是相似邊比的立方大於體積比,後來發現計算多誤差大,然後就變成了所求水的體積大於實際水的體積,結果因為強行套模板,還是錯55555.所以模板不是看懂會用就行了,還是要懂其中的思想啊。...

無題II 二分 匈牙利

這是乙個簡單的遊戲,在乙個n n的矩陣中,找n個數使得這n個數都在不同的行和列裡並且要求這n個數中的最大值和最小值的差值最小。輸入乙個整數t表示t組資料。對於每組資料第一行輸入乙個正整數n 1 n 100 表示矩陣的大小。接著輸入n行,每行n個數x 0 x 100 對於每組資料輸出乙個數表示最小差值...