SDOI2017 新生舞會

2022-05-19 09:41:15 字數 1013 閱讀 5061

題目大意:

有n個男生和n個女生跳舞。第i個男生和第j個女生組合會產生a[i][j]的喜悅程度和b[i][j]的不協調值。

現在你要找到一種方案,使喜悅程度總和與不協調值總和的比值最大。求這個比值。

解題思路:

分數規劃問題。

即令\(\frac\)最大。

令其為c,則\(\sum a=c\sum b\)。

\(\sum a-c\sum b=0\)。

二分c,則若\(\sum a-c\sum b\geq 0\),則答案可行。

判斷答案的可行性,發現這是個二分圖帶權匹配問題,跑最大費用最大流即可,兩點之間的費用即為\(a[i][j]-c\times b[i][j]\)。

若費用大於等於0則可行。

c++ code:

#includeconst int s=0,t=202;

int n,cnt;

int a[105][105],b[105][105],head[205],fl[205],pre[205],q[40004];

int from[99999],to[99999],nxt[99999],cap[99999];double cost[99999];

bool vis[205];

double dis[205];

inline int min(int a,int b)

int main()

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

for(int j=1;j<=n;++j)scanf("%d",&a[i][j]);

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

for(int j=1;j<=n;++j)scanf("%d",&b[i][j]);

double l=0,r=1e6,ans=0;

while(l+1e-8printf("%.6f\n",ans);

return 0;

}

SDOI 2017 新生舞會

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

Sdoi2017 新生舞會

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

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