description
學校組織了一次新生舞會,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值最大。
input
第一行乙個整數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
output
一行乙個數,表示c的最大值。四捨五入保留6位小數,選手輸出的小數需要與標準輸出相等
sample input
19 17 16
25 24 23
35 36 31
9 5 6
3 4 2
7 8 9
sample output
5.357143
今天cf打掛了,不開心
本來不想寫這題的。。但是覺得自己總是覺得..就不寫**不是很好。。
比較切..還是很有必要的。。
於是這題你就分數規劃一下,費用流盤可行就好了
#include
#include
#include
#include
#include
using
namespace
std;
const
int max=1
<<28;
const
int n=205;
const
double eps=1e-8;
int n;
int a[n][n];
int b[n][n];
int st,ed;
struct qt
s[105*105*2];int num,last[n];
void init (int x,int y,int z,double z1)
int from[n];
double f[n];
bool in[n];
bool spfa ()
queue
q;q.push(st);
f[st]=0;in[st]=true;
while (!q.empty())}}
in[x]=false;
}return from[ed]!=-1;
}double ans=0;
void lalal ()
x=from[ed];
while (x!=-1)
return ;
}bool check (double k)
ans=0;
while (spfa()) lalal();
return ans<=0.0;
}int main()
printf("%.6lf",l);
return
0;}
BZOJ4819 SDOI2017 新生舞會
bzoj luogu 有 n 個男孩子和 n 個女孩子。他們之間要兩兩結伴跳舞。已知第 i 個男孩子和第 j 個女孩子結伴跳舞會有兩個引數 a 和 b 現在要求乙個安排方案使得 a 的總和除以 b 的總和的商盡量大。形式化地,就是求乙個長度為 n 的排列 最大化 l frac a b 分數規劃。二分...
BZOJ 4819 Sdoi2017 新生舞會
bzoj 4819 sdoi2017 新生舞會 01分數規劃 費用流 學校組織了一次新生舞會,cathy作為經驗豐富的老學姐,負責為同學們安排舞伴。有n個男生和n個女生參加舞會 買乙個男生和乙個女生一起跳舞,互為舞伴。cathy收集了這些同學之間的關係,比如兩個人之前認識沒計算得出 a i j 表示...
4819 Sdoi2017 新生舞會
4819 sdoi2017 新生舞會 time limit 10 sec memory limit 128 mb submit 352 solved 177 submit status discuss description 學校組織了一次新生舞會,cathy作為經驗豐富的老學姐,負責為同學們安排舞...