SDOI 2017 新生舞會

2022-05-04 23:39:10 字數 1476 閱讀 7047

[題目鏈結]

[演算法]

很明顯的0 / 1分數規劃問題

首先二分答案 , 顯然 , 若 sigma(aij - mid * bij) >= 0 , 說明有比mid更優的解

用費用流 / km演算法檢驗即可

時間複雜度 : o(n^3logn)

[**]

#includeusing

namespace

std;

#define maxn 110

const

double inf =1e15;

const

double eps = 1e-9

;int

n;double

delta;

intmatch[maxn];

inta[maxn][maxn] , b[maxn][maxn];

double

la[maxn] , lb[maxn];

double

c[maxn][maxn];

bool

visiteda[maxn] , visitedb[maxn];

template

inline void chkmax(t &x,t y)

template

inline void chkmin(t &x,t y)

template

inline void read(t &x)

inline

bool dfs(int

u) }

else chkmin(delta , la[u] + lb[i] -c[u][i]);}}

return

false;}

inline

double

km()

for (int i = 1; i <= n; i++)}}

double ret = 0

;

for (int i = 1; i <= n; i++) ret +=c[match[i]][i];

return

ret;

}inline

bool check(double

mid)

}

if (km() >= 0) return

true

;

else

return

false;}

intmain()

}for (int i = 1; i <= n; i++)

}double l = 0 , r = (int)1e4 , ans = 0

;

while (l + eps else r =mid;

}printf(

"%.6lf\n

", ans);

return0;

}

Sdoi2017 新生舞會

time limit 10 sec memory limit 128 mb submit 259 solved 132 submit status discuss 學校組織了一次新生舞會,cathy作為經驗豐富的老學姐,負責為同學們安排舞伴。有n個男生和n個女生參加舞會 買乙個男生和乙個女生一起跳舞...

SDOI2017 新生舞會

題目大意 有n個男生和n個女生跳舞。第i個男生和第j個女生組合會產生a i j 的喜悅程度和b i j 的不協調值。現在你要找到一種方案,使喜悅程度總和與不協調值總和的比值最大。求這個比值。解題思路 分數規劃問題。即令 frac 最大。令其為c,則 sum a c sum b sum a c sum...

SDOI2017 新生舞會 題解

luogu loj bzoj 發現題目要求 c frac a i b i 最大化 稍作變形得 sum a i sum b i c 0 於是容易想到二分答案 c 並將第 i 個男生與第 j 個女生連一條無向邊,權值為 a b c 使用km演算法進行帶權二分圖的最大匹配。如果結果大於等於 0 那麼答案小...