P1559 運動員最佳匹配問題 最大費用最大流

2022-04-30 21:30:16 字數 1078 閱讀 6445

羽毛球隊有男女運動員各n人。給定2 個n×n矩陣p和q。p[i][j]是男運動員i和女運動員j配對組成混合雙打的男運動員競賽優勢;q[i][j]是女運動員i和男運動員j配合的女運動員競賽優勢。由於技術配合和心理狀態等各種因素影響,p[i][j]不一定等於q[j][i]。男運動員i和女運動員j配對組成混合雙打的男女雙方競賽優勢為p[i][j]*q[j][i]。設計乙個演算法,計算男女運動員最佳配對法,使各組男女雙方競賽優勢的總和達到最大。

這道題n很小,爆搜拿滿分不成問題,但是本人不喜歡爆搜,還經常寫錯。

顯然我們要求的是乙個二分圖最大帶權匹配,最大費用最大流求之,spfa最長路+ek最大流。

當然,這道題明顯是乙個完備匹配,km演算法也可以,但是我沒學。

注意細節,建費用邊時,反向邊設定邊權為正向邊的相反數。

感性理解一下,首先要明白增廣路徑演算法中路徑是可以反悔的,意思就是一條路搜到不合法的時候還可以沿著反向邊回溯而答案不受影響,所以我們在反悔時就要用費用的相反數抵消掉影響。

#include#include#include#include#include#include#include#include#include#include#define n 51

#define m 10010

#define inf 0x3f3f3f3f

using namespace std;

inline int read()

while(c>='0'&&c<='9')

return x*f;

}struct recg[m<<1];

int head[m],tot=1,d[m],n,p[n][n],q[n][n],now[n],pre[n];

int ans;

bool v[m];

inline void add(int x,int y,int val,int e)

inline bool spfa()

} if(d[2*n+1]==-inf) return 0;

else return 1;

}inline void change()

}int main()

P1559 運動員最佳匹配問題

羽毛球隊有男女運動員各n人。給定2 個n n矩陣p和q。p i j 是男運動員i和女運動員j配對組成混合雙打的男運動員競賽優勢 q i j 是女運動員i和男運動員j配合的女運動員競賽優勢。由於技術配合和心理狀態等各種因素影響,p i j 不一定等於q j i 男運動員i和女運動員j配對組成混合雙打的...

題解 P1559 運動員最佳匹配問題

羽毛球隊有男女運動員各n人。給定2 個n n矩陣p和q。p i j 是男運動員i和女運動員j配對組成混合雙打的男運動員競賽優勢 q i j 是女運動員i和男運動員j配合的女運動員競賽優勢。由於技術配合和心理狀態等各種因素影響,p i j 不一定等於q j i 男運動員i和女運動員j配對組成混合雙打的...

洛谷p1559運動員最佳匹配問題

題目 搜尋 可行性剪枝 雖然這題目是我搜二分圖的標籤搜到的 但是n比較小 明顯可以暴力 然而只有80分 再加上可行性剪紙就行啦 就是記所有運動員他所能匹配到的最大值 在我們搜尋到第i層的時候 如果他後邊的運動員的最大值加起來還比當前已經搜到的最優解還小的話 就把他減掉 code bao li inc...