過山車(最大二分匹配)

2021-09-25 17:44:42 字數 1577 閱讀 8888

題目鏈結

problem description

rpg girls今天和大家一起去遊樂場玩,終於可以坐上夢寐以求的過山車了。可是,過山車的每一排只有兩個座位,而且還有條不成文的規矩,就是每個女生必須找個個男生做partner和她同坐。但是,每個女孩都有各自的想法,舉個例子把,rabbit只願意和xhd或pqk做partner,grass只願意和linle或ll做partner,princesssnow願意和水域浪子或偽酷兒做partner。考慮到經費問題,boss劉決定只讓找到partner的人去坐過山車,其他的人,嘿嘿,就站在下面看著吧。聰明的acmer,你可以幫忙算算最多有多少對組合可以坐上過山車嗎?

input

輸入資料的第一行是三個整數k , m , n,分別表示可能的組合數目,女生的人數,男生的人數。0output

對於每組資料,輸出乙個整數,表示可以坐上過山車的最多組合數。

sample input

6 3 3

1 11 2

1 32 1

2 33 1

0sample output3

思路:

這是一道非常非常經典的二分圖匹配的題目.

這個二分匹配的題也可以理解為你是一位月老,一點一點的,通過尋找增廣路來湊成一對又一對.

最大二分匹配的思路核心很簡單:

無腦列舉,尋找最優解.

不斷的通過列舉尋找增廣路~

比如這個題目的思路就靠兩個for迴圈構成題目的核心:

第乙個for:

int output=0;

//當然是輸出的結果啦~

for(

int i=

1;i<=n;i++

)//這裡n表示男生的人數.(男生一般臉皮都比較厚所以要男生主動去問女生啦~(其實都可以)).

然後是第二個for

int

find

(int x)}}

return0;

}

ac完整**

#include

#include

using

namespace std;

const

int maxn =

505;

int map[maxn]

[maxn]

;//圖的陣列.

int vis[maxn]

;//標記陣列.

int pri[maxn]

;int k,m,n;

intfind

(int x)}}

return0;

}int

main()

int output=0;

for(

int i=

1;i<=n;i++

)printf

("%d\n"

,output);}

}

過山車 (二分匹配)

rpg girls今天和大家一起去遊樂場玩,終於可以坐上夢寐以求的過山車了。可是,過山車的每一排只有兩個座位,而且還有條不成文的規矩,就是每個女生必須找個個男生做partner和她同坐。但是,每個女孩都有各自的想法,舉個例子把,rabbit只願意和xhd或pqk做partner,grass只願意和l...

HDU 2063 過山車 第一道最大二分匹配

題目大意 m個女生和n個男生一起做過山車,每一排必須一男一女,而每個女孩願意和一些男生坐一起,你要找出乙個最大匹配,使得最多的人坐上過山車。思路 第一道二分匹配。在同學blog上看到的題。學習了匈牙利演算法。課上有講過,不過那時我在幹啥?沒弄太明白,現在懂了哈哈。include includecon...

二分匹配 匈牙利演算法模板 過山車

description rpg girls今天和大家一起去遊樂場玩,終於可以坐上夢寐以求的過山車了。可是,過山車的每一排只有兩個座位,而且還有條不成文的規矩,就是每個女生必須找個個男生做partner和她同坐。但是,每個女孩都有各自的想法,舉個例子把,rabbit只願意和xhd或pqk做partne...