洛谷P1402 酒店之王 解題報告

2022-04-29 20:30:10 字數 1961 閱讀 8819

xx酒店的老闆想成為酒店之王,本著這種希望,第一步要將酒店變得人性化。由於很多來住店的旅客有自己喜好的房間色調、陽光等,也有自己所愛的菜,但是該酒店只有p間房間,一天只有固定的q道不同的菜。

有一天來了n個客人,每個客人說出了自己喜歡哪些房間,喜歡哪道菜。但是很不幸,可能做不到讓所有顧客滿意(滿意的條件是住進喜歡的房間,吃到喜歡的菜)。

這裡要怎麼分配,能使最多顧客滿意呢?

第一行給出三個正整數表示n,p,q(<=100)。

之後n行,每行p個數包含0或1,第i個數表示喜不喜歡第i個房間(1表示喜歡,0表示不喜歡)。

之後n行,每行q個數,表示喜不喜歡第i道菜。

最大的顧客滿意數。

2 2 2

1 01 0

1 11 1

1
網路最大流。這裡不詳細講,請大家先掌握。

注意,以下出現的所有邊邊權皆為1,且其反向邊邊權為0

我們以房間、菜、人為點建圖。

像這樣:

s(=0)表示額外建的乙個起始點,ri(=i + n + n)表示第i個房間,di(=i+n+n+p)表示第i種菜,由於人只有乙個,而網路流處理只經過乙個點不方便,我們採用一種神奇方法——拆點!也就是說,把乙個人看做兩個點,要匹配這個人必須經過這個人兩點之間的邊,這樣就可以控制這個人只匹配一次。如圖,pi(=i)、pi'(=i+n)表示第i個人。

然後建邊。如圖,將s與所有ri相連,將所有的di與t相連,s作為源點,t作為匯點。如果pi喜歡rj,就將pi與rj相連。如果pi喜歡dj,就將dj與pi'之間相連。當然,pi與pi'之間也要連一條邊。

然後就可以套網路最大流辣。最後得出的答案即為滿意數。

有一天來了n批客人,每批客人喜歡的菜、房間都相同。第i批客人有gi位客人。其餘同原題。

hint:我們可以把每批客人當做2個點pi、pi',在pi、pi'之間連gi條邊連一條權為gi的邊即可。菜、房間每種有多個同理。

#includeusing namespace std;

#define open(s) freopen( s".in", "r", stdin ), freopen( s".out", "w", stdout )

#define maxn 405

#define maxm 40005

int n, p, q;

int hd[maxn], nxt[maxm << 1], to[maxm << 1], val[maxm << 1], tot(1);

int ans, dis[maxn];

queueq;

int x, y;

int s, t;

void add( int x, int y, int z )

bool bfs()

} return 0;

}int dfs( int x, int fl )

} return fl - res;

}int main()

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

for ( int j = 1; j <= q; ++j )

int t;

while( bfs() )

while( ( t = dfs( s, 0x7f7f7f7f ) ) > 0 ) ans += t;

printf( "%d\n", ans );

return 0;

}

這類題目如果要用網路最大流解決,一般來說,將「選擇者」放中間,並且要拆點,「被選物」放兩邊,直接與源點、匯點相連。但是這種做法「被選物」不能多於兩種。

如果多於兩種,要怎麼做呢? 我也不知道 qaq)求教大佬qaq

洛谷 P1402 酒店之王

題目描述 xx酒店的老闆想成為酒店之王,本著這種希望,第一步要將酒店變得人性化。由於很多來住店的旅客有自己喜好的房間色調 陽光等,也有自己所愛的菜,但是該酒店只有p間房間,一天只有固定的q道不同的菜。有一天來了n個客人,每個客人說出了自己喜歡哪些房間,喜歡哪道菜。但是很不幸,可能做不到讓所有顧客滿意...

洛谷 P1402 酒店之王

題目描述 xx酒店的老闆想成為酒店之王,本著這種希望,第一步要將酒店變得人性化。由於很多來住店的旅客有自己喜好的房間色調 陽光等,也有自己所愛的菜,但是該酒店只有p間房間,一天只有固定的q道不同的菜。有一天來了n個客人,每個客人說出了自己喜歡哪些房間,喜歡哪道菜。但是很不幸,可能做不到讓所有顧客滿意...

洛谷P1402 酒店之王

洛谷連線 酒店之王 xx酒店的老闆想成為酒店之王,本著這種希望,第一步要將酒店變得人性化。由於很多來住店的旅客有自己喜好的房間色調 陽光等,也有自己所愛的菜,但是該酒店只有p間房間,一天只有固定的q道不同的菜。有一天來了n個客人,每個客人說出了自己喜歡哪些房間,喜歡哪道菜。但是很不幸,可能做不到讓所...