P1402 酒店之王【网络流】【最大流】
P1402 酒店之王
推荐题目
题目描述
XX酒店的老板想成为酒店之王,本着这种希望,第一步要将酒店变得人性化。由于很多来住店的旅客有自己喜好的房间色调、阳光等,也有自己所爱的菜,但是该酒店只有p间房间,一天只有固定的q道不同的菜。
有一天来了n个客人,每个客人说出了自己喜欢哪些房间,喜欢哪道菜。但是很不幸,可能做不到让所有顾客满意(满意的条件是住进喜欢的房间,吃到喜欢的菜)。
这里要怎么分配,能使最多顾客满意呢?
输入格式
第一行给出三个正整数表示n,p,q(<=100)。
之后n行,每行p个数包含0或1,第i个数表示喜不喜欢第i个房间(1表示喜欢,0表示不喜欢)。
之后n行,每行q个数,表示喜不喜欢第i道菜。
输出格式
最大的顾客满意数。
输入输出样例
2 2 2 1 0 1 0 1 1 1 1
1 思路:
本来想用来练习二分匹配,但是发现匈牙利算法好像无法解决两个关联的二分图问题,画的图却很像拆点的最大流。
只要把菜或房单独连向超级源、汇,再把人拆开做一个流入流出,随后套dinic的模板就行了。
不知道为什么ISAP只能过7个点,如果有ISAP过的同学可以教教我嘛。
#include <bits/stdc++.h> using namespace std;
const int maxn = ; int s,t,flow;
int head[maxn];
int pre[maxn];
int n,p,q;
int cnt = ;
int a[maxn]; template<class T>inline void read(T &res)
{
char c;T flag=;
while((c=getchar())<''||c>'')if(c=='-')flag=-;res=c-'';
while((c=getchar())>=''&&c<='')res=res*+c-'';res*=flag;
} struct Edge {
int to, nxt, cap;
}edge[maxn]; void BuildGraph(int u, int v, int cap) {
edge[++cnt].to = v;
edge[cnt].nxt = head[u];
edge[cnt].cap = cap;
head[u] = cnt; edge[++cnt].to = u;
edge[cnt].nxt = head[v];
edge[cnt].cap = ;
head[v] = cnt;
} bool bfs() {
queue <int> q;
memset(a, , sizeof(a));
a[s] = 0x3f3f3f3f;
q.push(s);
while(!q.empty()) {
int u = q.front();
q.pop();
for(int i = head[u]; i; i = edge[i].nxt) {
int to = edge[i].to;
if(!edge[i].cap) {
continue;
}
if(a[to]) {
continue;
}
a[to] = min(a[u], edge[i].cap);
pre[to] = i;
q.push(to);
}
}
if(!a[t]) {
return ;
}
flow += a[t];
return ;
} void Dinic() {
int m = t;
for(; pre[m]; m = edge[pre[m]^].to) {
edge[pre[m]].cap -= a[t];
edge[pre[m]^].cap += a[t];
}
} int main()
{
read(n), read(p), read(q);
s = *n+q+p+;
t = s+;
for(int i = ; i <= n; ++i) {
for(int x, j = ; j <= p; ++j) {
read(x);
if(x) {
BuildGraph(j, p+i, );
}
}
}
for(int i = ; i <= n; ++i) {
for(int x, j = ; j <= q; ++j) {
read(x);
if(x) {
BuildGraph(p+n+q+i, p+n+j, );
}
}
}
for(int i = ; i <= n; ++i) {
BuildGraph(p+i, p+n+q+i,);
}
for(int i = ; i <= p; ++i) {
BuildGraph(s, i, );
}
for(int i = p+n+; i <= p+q+n; ++i) {
BuildGraph(i, t, );
}
while(bfs()) {
Dinic();
}
printf("%d\n",flow);
return ;
}
P1402 酒店之王【网络流】【最大流】的更多相关文章
- P1402 酒店之王 网络流
大水题,我自己瞎做就做出来了,没啥说的,zz建图,就是板子. 题干: 题目描述 XX酒店的老板想成为酒店之王,本着这种希望,第一步要将酒店变得人性化.由于很多来住店的旅客有自己喜好的房间色调.阳光等, ...
- LUOGU P1402 酒店之王 (网络流)
解题思路 应该比较显然得能看出这是个网络流,将$S$与房间连边,房间与人连边,人与菜连边,菜与汇点连边,边的流量均为1.但这样是错误的,因为有可能一个人跑过去2的流量,所以要将人拆点限流. #incl ...
- 2018.08.19 洛谷P1402 酒店之王(最大流)
传送门 最大流入门题,把人拆点即可. 代码: #include<bits/stdc++.h> #define N 505 using namespace std; inline int r ...
- 洛谷P2891 Dining P1402 酒店之王【类二分图匹配】题解+代码
洛谷P2891 Dining P1402 酒店之王[类二分图匹配]题解+代码 酒店之王 题目描述 XX酒店的老板想成为酒店之王,本着这种希望,第一步要将酒店变得人性化.由于很多来住店的旅客有自己喜好的 ...
- P1402 酒店之王
P1402 酒店之王 每个人要匹配一个A和一个B,所以这样连边: S向每个房间连边. 每个房间向喜欢这个房间的人连边. 每个人向喜欢的菜连边. 每道菜向T连边. 边权均为1. 注意人要限流. // I ...
- 「LuoguP1402」 酒店之王(最大流
题目描述 XX酒店的老板想成为酒店之王,本着这种希望,第一步要将酒店变得人性化.由于很多来住店的旅客有自己喜好的房间色调.阳光等,也有自己所爱的菜,但是该酒店只有p间房间,一天只有固定的q道不同的菜. ...
- 洛谷P1402 酒店之王(二分图)
P1402 酒店之王 题目描述 XX酒店的老板想成为酒店之王,本着这种希望,第一步要将酒店变得人性化.由于很多来住店的旅客有自己喜好的房间色调.阳光等,也有自己所爱的菜,但是该酒店只有p间房间,一天只 ...
- P1402 酒店之王 最大流
\(\color{#0066ff}{ 题目描述 }\) XX酒店的老板想成为酒店之王,本着这种希望,第一步要将酒店变得人性化.由于很多来住店的旅客有自己喜好的房间色调.阳光等,也有自己所爱的菜,但是该 ...
- 【刷题】洛谷 P1402 酒店之王
题目描述 XX酒店的老板想成为酒店之王,本着这种希望,第一步要将酒店变得人性化.由于很多来住店的旅客有自己喜好的房间色调.阳光等,也有自己所爱的菜,但是该酒店只有p间房间,一天只有固定的q道不同的菜. ...
随机推荐
- 优雅的C#
@符号:字符串中的转义符不转义,可支持字符串换行,例如:string test = "hello\\",正常输出hello\,改成string test = @"hell ...
- DOTNET Core MVC (一)
以控台的形式,运行.net core mvc 代码, Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => ...
- 通配符与标签!important的背景展示,也是让我怀疑人生了
是谁在耳边对我说!important提升权重优先级,只为这一句,我用了3600s研究通配符与标签!important的背景展示,也是让我怀疑人生了!选择器权值:标签选择器1,类选择器和伪类选择器:10 ...
- MySQL 普通索引和唯一索引的区别
该文为< MySQL 实战 45 讲>的学习笔记,感谢查看,如有错误,欢迎指正 一.查询和更新上的区别 这两类索引在查询能力上是没差别的,主要考虑的是对更新性能的影响.建议尽量选择普通索引 ...
- pom.xml 配置 收藏
本配置使用环境 jdk8 maven 3.6 C:\Users\Dell>java -version java version "1.8.0_162" Java(TM) ...
- Blazor client-side + webapi (.net core 3.1) 添加jwt验证流程(非host)第三章 客户端存储及验证
准备工作: 安装Nuget包:Blazored.LocalStorge. 这是一个client-side 浏览器存储库,找了非常久. 官方文档中也有一款Microsoft.AspNetCore.Pro ...
- 3Python脚本在linux环境下头文件解释
#!/usr/bin/python到底是什么意思 有这句的,加上执行权限后,可以直接用 ./ 执行,不然会出错,因为找不到 python 解释器. #!/usr/bin/python 是告诉操作系统执 ...
- aov.h-1.1
//AOV网与拓扑排序类 #ifndef _AOV_H_ #define _AOV_H_ #include<iostream> #include<cstdio> #includ ...
- .net core 中如何读取 appsettings.json 相关配置
appsettings.json如下 { "Logging": { "LogLevel": { "Default": "Debug ...
- Sikerio --《只狼》
“狼啊,替我断绝不死吧”