Sdoi2017 新生舞會

2022-05-08 04:21:10 字數 2090 閱讀 1723

time limit: 10 sec  memory limit: 128 mb

submit: 259  solved: 132

[submit][status][discuss]

學校組織了一次新生舞會,cathy作為經驗豐富的老學姐,負責為同學們安排舞伴。有n個男生和n個女生參加舞會

買乙個男生和乙個女生一起跳舞,互為舞伴。cathy收集了這些同學之間的關係,比如兩個人之前認識沒計算得出 

a[i][j] ,表示第i個男生和第j個女生一起跳舞時他們的喜悅程度。cathy還需要考慮兩個人一起跳舞是否方便,

比如身高體重差別會不會太大,計算得出 b[i][j],表示第i個男生和第j個女生一起跳舞時的不協調程度。當然,

還需要考慮很多其他問題。cathy想先用乙個程式通過a[i][j]和b[i][j]求出一種方案,再手動對方案進行微調。c

athy找到你,希望你幫她寫那個程式。乙個方案中有n對舞伴,假設沒對舞伴的喜悅程度分別是a'1,a'2,...,a'n,

假設每對舞伴的不協調程度分別是b'1,b'2,...,b'n。令

c=(a'1+a'2+...+a'n)/(b'1+b'2+...+b'n),cathy希望c值最大。

第一行乙個整數n。

接下來n行,每行n個整數,第i行第j個數表示a[i][j]。

接下來n行,每行n個整數,第i行第j個數表示b[i][j]。

1<=n<=100,1<=a[i][j],b[i][j]<=10^4

一行乙個數,表示c的最大值。四捨五入保留6位小數,選手輸出的小數需要與標準輸出相等

319 17 16

25 24 23

35 36 31

9 5 6

3 4 2

7 8 9

5.357143

a1+a2+...+an>ans*(b1+b2+b3+...+bn)

時,可以更新

ans。

然後就可以二分了,每次二分乙個答案跑費用流。
顯然這是乙個二分圖,a部和

b部的每個點之間連邊,容量為

1,費用為0,

s與a部,

b部與t連邊,容量為

1,費用為

a-ans*b

。常數大的飛起的**。

1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8

#define maxn 210

9#define inf 1999999999.0

10#define rg register

11using

namespace

std;

12struct

datag[maxn*maxn*2],e[maxn*maxn*2

];16

double

a[maxn][maxn],b[maxn][maxn],dis[maxn];

17int head[maxn],edge=-1

,vis[maxn],pre[maxn];

18int q[maxn*maxn];

19 inline int

read()

27 inline void add(int

from,int to,int w,int a,int

b)35 inline bool spfa(int s,int t,double

kp)53}54

}55if(dis[t]==zd) return0;

56else

return1;

57}58 inline double end(int s,int t,double

kp)69

return

ans;70}

71 inline double solve(int s,int t,double

kp)77

intmain()

78102 printf("

%.6lf

",r);

103return0;

104 }

SDOI 2017 新生舞會

題目鏈結 演算法 很明顯的0 1分數規劃問題 首先二分答案 顯然 若 sigma aij mid bij 0 說明有比mid更優的解 用費用流 km演算法檢驗即可 時間複雜度 o n 3logn includeusing namespace std define maxn 110 const dou...

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 那麼答案小...