酒店之王

酒店之王

题目描述

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

题解:
裸的最大流,只不过人要拆成两个点,用以保证每一个人只用一次。
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<cstdlib>
#include<queue>
#include<stack>
#include<vector>
#include<ctime>
using namespace std;
int n,m,l;
struct node
{int next,to,cap;
}edge[300001];
int size=1,head[501];
void putin(int from,int to,int cap)
{size++;edge[size].next=head[from];edge[size].cap=cap;edge[size].to=to;head[from]=size;
}
void in(int from,int to,int cap)
{putin(from,to,cap);putin(to,from,0);
}
int dist[501],numbs[501];
void bfs(int src,int des)
{int i;queue<int>mem;mem.push(des);numbs[0]++;while(!mem.empty()){int x=mem.front();mem.pop();for(i=head[x];i!=-1;i=edge[i].next){int y=edge[i].to;if(edge[i].cap==0&&dist[y]==0&&y!=des){dist[y]=dist[x]+1;numbs[dist[y]]++;mem.push(y);}}}return;
}
int dfs(int src,int flow,int des)
{if(src==des)return flow;int i,low=0,mindist=n+n+m+l+2;for(i=head[src];i!=-1;i=edge[i].next){int y=edge[i].to;if(edge[i].cap){if(dist[y]==dist[src]-1){int t=dfs(y,min(flow-low,edge[i].cap),des);edge[i].cap-=t;edge[i^1].cap+=t;low+=t;if(dist[src]>=n+n+m+l+2)return low;if(low==flow)break;}mindist=min(mindist,dist[y]+1);}}if(!low){if(!(--numbs[dist[src]]))dist[n+n+m+l+2]=n+n+m+l+2;++numbs[dist[src]=mindist];}return low;
}
int ISAP(int src,int des)
{int ans=0;bfs(src,des);while(dist[0]<n+n+m+l+2)ans+=dfs(src,2e8,des);return ans;
}
int main() 
{int i,j;memset(head,-1,sizeof(head));scanf("%d%d%d",&n,&m,&l);for(i=1;i<=m;i++)in(0,i,1);for(i=m+n+n+1;i<=m+n+n+l;i++)in(i,n+n+m+l+1,1);for(i=1;i<=n;i++){for(j=1;j<=m;j++){int k;scanf("%d",&k);if(k)in(j,m+i,1);}}for(i=1;i<=n;i++){for(j=1;j<=l;j++){int k;scanf("%d",&k);if(k)in(m+n+i,m+n+n+j,1);}}for(i=m+1;i<=m+n;i++){in(i,i+n,1);}printf("%d",ISAP(0,n+n+m+l+1));return 0;
}

 

转载于:https://www.cnblogs.com/huangdalaofighting/p/6885888.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/456437.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用IntelliJ IDEA碰到的问题总结

文章目录问题一&#xff1a;无法创建Java Class文件问题一&#xff1a;无法创建Java Class文件 今天打开项目时&#xff0c;发现右击新建不了java.class文件&#xff0c;于是尝试了以下方法&#xff1a; &#xff08;1&#xff09;选择 File——>Project Structure——>…

为什么shell脚本第一行要#!/bin/sh

告诉操作系统, 此脚本的解释器为 /bin/sh 这个可执行文件 类似地, 如果你的脚本用 bash, ksh, 解释, 第一行就应该是#!/bin/bash #!/bin/ksh 之类的 或者, 你自己定义一种脚本语言, 再自己写个解释器去执行它, 比如说叫 xshell, 放在 /usr/local/bin 下, 你的脚本第一行就应该是…

linux文本处理常用指令总结

引子 作为一个偏爱windows的程序员&#xff0c;以前做文本处理的时候总是喜欢在windows下用notepad等图形化工具处理&#xff0c;比如有时需要把linux服务器上一个文件进行一次全局字符串替换这样简单的操作&#xff0c;还得把文件down到本地编辑好再传回去。这两天买了本《鸟哥…

CSS——基础选择器

CSS的基础选择器1 CSS指的是层叠样式表2 CSS规则由两个主要的部分构成选择器&#xff0c;以及一条或多条声明3 选择器通常是你需要改变样式的 HTML 元素如h14 每条声明由一个属性和一个值组成&#xff0c;每个属性有一个值&#xff0c;属性和值被冒号分开5 属性大于 …

Linux中chown和chmod的区别和用法

chmod修改第一列内容&#xff0c; chown修改第3、4列内容&#xff1a; chown用法&#xff1a; 用来更改某个目录或文件的用户名和用户组。 chown 用户名:组名 文件路径&#xff08;可以是绝对路径也可以是相对路径&#xff09; 例1&#xff1a;chown root:root /tmp/tmp1 就…

玩大数据期间碰到的一些问题总结

文章目录问题一&#xff1a;Zookeeper节点数量为什么建议是奇数个&#xff1f;问题二&#xff1a;HA机制的Hadoop集群中Journal Node 作用问题三&#xff1a;两个datanode节点互相排斥怎么解决&#xff08;集群无法识别新加入的Datanode&#xff09;&#xff1f;问题四&#xf…

JAVA的SSH框架登录注册

Struts 的MVC设计模式可以使我们的逻辑变得很清晰&#xff0c;主要负责表示层的显示。 Spring 的IOC和AOP可以使我们的项目在最大限度上解藕。 hibernate的就是实体对象的持久化了, 数据库的封装。 项目截图&#xff1a;(代码是按照项目截图上传的&#xff0c;直接对号入座即可…

Visual Studio Code 前端调试不完全指南

本文最初发布于我的个人博客&#xff1a;咀嚼之味Visual Studio Code (以下简称 vscode) 如今已经代替 Sublime&#xff0c;成为前端工程师们最喜爱的代码编辑器。它作为一个大型的开源项目&#xff0c;不断推陈出新&#xff1b;社区中涌现出大量优质的插件&#xff0c;以支持我…

MySQL中(delete、truncate、drop) 的区别

delete、truncate、drop的用法 MySQL 数据表中delete删除数据的通用语法&#xff1a; ###删除 students_tbl 表中 student_id 为3 的记录&#xff1a; delete from students_tbl where student_id3; MySQL 数据表中truncate删除数据的通用语法&#xff1a; ###删除 students_…

机器学习之LDA主题模型算法

文章目录1、知道LDA的特点和应用方向1.1、特点1.2、应用方向2、知道Beta分布和Dirichlet分布数学含义3、了解共轭先验分布4、知道先验概率和后验概率5、知道参数α值的大小对应的含义6、掌握LDA主题模型的生成过程7、知道超参数α等值的参考值8、LDA总结1、知道LDA的特点和应用…

分别写出引入CSS的3种方式, 特点, 优先级

第一&#xff1a;css的三种引入方式 1.行内样式 最直接最简单的一种&#xff0c;直接对HTML标签使用style""&#xff0c;例如&#xff1a; <p style"color:#F00; "></p> 缺点&#xff1a;HTML页面不纯净&#xff0c;文件体积大&#xff0c…

[Go] Template 使用简介

Golang 提供了两个标准库用来处理模板 text/template 和 html/template。我们使用 html/template 格式化 html 字符。 模板引擎 模板引擎很多&#xff0c;Python 的 jinja&#xff0c;nodejs 的 jade 等都很好。所谓模板引擎&#xff0c;则将模板和数据进行渲染的输出格式化后的…

内存泄露监测

2019独角兽企业重金招聘Python工程师标准>>> iOS 内存泄露监测 144 作者 谢谢生活 已关注 2017.05.19 17:38* 字数 4235 阅读 209评论 0喜欢 6 iOS可能存在的内存泄露&#xff1a;block 循环引用。当一个对象有一个block属性&#xff0c;而block属性又引用这个对象…

玩Azkaban跳过的坑

文章目录一号坑&#xff1a;启动Azkaban报错&#xff1a;User xml file conf/azkaban-users.xml doesnt exist.二号坑&#xff1a;报错&#xff1a;failed SslSocketConnector0.0.0.0:8443: java.io.FileNotFoundException: /home/hadoop/app/azkaban/azkaban-web-2.5.0/bin/ke…

两种解除禁止右键、选中、复制的方法

我在网上找的 两种解除禁止右键、选中、复制的方法 1、直接存到书签点击即可 javascript:(function(){var docdocument;var bddoc.body;bd.onselectstartbd.oncopybd.onpastebd.onkeydownbd.oncontextmenubd.onmousemovebd.onselectstartbd.ondragstartdoc.onselectstartdoc.o…

删除节点removeChild()

http://www.imooc.com/code/1700 删除节点removeChild() removeChild() 方法从子节点列表中删除某个节点。如删除成功&#xff0c;此方法可返回被删除的节点&#xff0c;如失败&#xff0c;则返回 NULL。 语法: nodeObject.removeChild(node) 参数: node &#xff1a;必需&…

机器学习自主解决安全威胁离我们还有多远?

曾经听见不止一次这样的问题&#xff1a; “机器学习会替代基于人工经验规则的安全解决方案么&#xff1f;”把这个问题放在去年来看&#xff0c;我们已经得到了非常多的讨论甚至是一些已经实际应用的解决方案&#xff0c;对于人工智能在安全以及其它各种对数据进行价值挖掘的场…

Linux执行定时任务(crontab)遇到的坑

文章目录前言&#xff1a;1、建立定时任务的两种方式1.1、crontab -e1.2、vi /etc/ crontab2、两种方法的区别2.1、用户级2.2、系统级3、解决办法前言&#xff1a; 之前第一次要在生产环境部署定时任务&#xff0c;无奈的是&#xff0c;博主对定时任务这块还是个小白&#xff…

Vue:解决[Vue warn]: Failed to resolve directive: modle (found in Anonymous)

解决问题 [Vue warn]: Failed to resolve directive: modle (found in <ComponentA>) console.error(("[Vue warn]: " msg trace)); 原因是 我把model 写成了 modle 这类错误一般是单词写错了 (found in <Anonymous>) 解决思路

Oracle树查询及相关函数

Oracle树查询的最重要的就是select...start with... connect by ...prior 语法了。依托于该语法&#xff0c;我们可以将一个表形结构的中以树的顺序列出来。在下面列述了Oracle中树型查询的常用查询方式以及经常使用的与树查询相关的Oracle特性函数等&#xff0c;在这里只涉及到…