洛谷 P1402 酒店之王

2021-09-30 13:39:45 字數 1397 閱讀 2163

題目描述

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

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

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

輸入輸出格式

輸入格式:

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

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

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

輸出格式:

最大的顧客滿意數。

輸入輸出樣例

輸入樣例#1:

2 2 2

1 0

1 0

1 1

1 1

輸出樣例#1:

1【分析】

考前再寫一篇吧…

房間放左邊,人放中間拆點限制流1,菜扔右邊。最大流。

【**】

//洛谷 p1402 酒店之王

#include

#define inf 1e9

#define ll long long

#define m(a) memset(a,0,sizeof a)

#define fo(i,j,k) for(i=j;i<=k;i++)

using

namespace

std;

const

int mxn=505;

queue

q;int n,p,q,s,t,cnt,ans;

int dis[mxn],head[mxn];

struct edge f[100005];

inline

void add(int u,int v,int flow)

inline

bool bfs()

}return dis[t]>0;

}inline

int find(int u,int low)

}if(!sum) dis[u]=-1;

return sum;

}int main()

fo(i,1,n) fo(j,1,q)

fo(i,1,p) add(s,i,1);

fo(i,1,n) add(p+i,p+n+i,1);

fo(i,1,q) add(i+p+n+n,t,1);

while(bfs()) ans+=find(s,inf);

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

return

0;}

洛谷 P1402 酒店之王

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

洛谷P1402 酒店之王

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

洛谷 P1402 酒店之王

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