題目描述
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個客人,每個客人說出了自己喜歡哪些房間,喜歡哪道菜。但是很不幸,可能做不到讓所有顧客滿意 滿意的條...