舞會心動男 女生配對問題

2022-05-24 12:03:10 字數 1323 閱讀 2688

今天,在冬木市舉行了一場盛大的舞會。參加舞會的有n 位男士,從 1 到 n 編號;有 m 位女士,從 1 到 m 編號。對於每一位男士,他們心中都有各自心儀的一些女士,在這次舞會中,他們希望能與每一位自己心儀的女士跳一次舞。同樣的,對於每一位女士,她們心中也有各自心儀的一些男士,她們也希望能與每一位自己心儀的男士跳一次舞。在舞會中,對於每一首舞曲,你可以選擇一些男士和女士出來跳舞。但是顯然的,一首舞曲中一位男士只能和一位女士跳舞,一位女士也只能和一位男士跳舞。由於舞會的時間有限,現在你想知道你最少需要準備多少首舞曲,才能使所有人的心願都得到滿足?

這道題可以在牛客上面做

因為同一首歌內,男生/女生只能接受乙個邀約,所以最多需要多少首歌,就取決於最受歡迎的那個男/女生被多少人翻牌子。我們用乙個二維矩陣\(d=(d_)\)記錄,我們需要配對的男、女生。\(d_=1\)表示我們需要將第\(i\)號男生和第\(j\)號女生進行配對,至於誰是誰的心動男/女生,我們管不著;\(d_=0\)表示他們互不心動,但也不代表他們不會被配對上,有人跳舞總好過沒有嘛。通過輸入修改二維矩陣元素後,我們看第\(i\)行,1的個數\(c_i\)就是第i號男生受歡迎的程度,我們共需要\(c_i\)首歌才可以滿足這個需求。所以我們按行、按列相加之後,就可以知道每個男生、女生的受歡迎程度。最終需要多少首歌,就取決於最受歡迎的那個人有多少個配對需求啦。

line = raw_input().split()

n, m = map(int, line)

like = [[0 for i in range(n)] for i in range(m)]

for i in range(n):

line = map(int, raw_input().split())

for j in range(1, line[0] + 1):

like[line[j]-1][i] = 1

for i in range(m):

line = map(int, raw_input().split())

for j in range(1, line[0] + 1):

like[i][line[j]-1] = 1

res1 = [0 for i in range(n)]

res2 = [0 for i in range(m)]

for i in range(n):

for j in range(m):

res1[i] += like[j][i]

for i in range(m):

for j in range(n):

res2[i] += like[i][j]

print max(res1 + res2)

這樣表白,會不會心動?

這樣表白,會不會心動?表白可是一種語言藝術,說得不好,妹子撒腿就跑。要是說的妙,那可是妹子懷裡抱,今天就教大家幾招 1.i fall in love with you at first sight.我對你一見鐘情。fall in love with somebody.愛上某人 at first si...

你會心動嗎?ICPR 2018 MTWI挑戰賽開啟

網際網路世界中,是傳遞資訊的重要媒介。特別是電子商務 社交 搜尋等領域,每天都有數以億兆級別的影象在流動傳播。基於深度學習的文字識別 ocr 技術正飛速發展,並深刻影響著資訊的互動和傳遞方式,乃至改變相關行業的生產方式。而在學術領域,中的文字識別 ocr 同樣也是研究重點,但目前業內依舊缺少基於網路...