博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
酒店之王
阅读量:5975 次
发布时间:2019-06-20

本文共 1663 字,大约阅读时间需要 5 分钟。

题目描述 Description

XX酒店的老板想成为酒店之王,本着这种希望,第一步要将酒店变得人性化。由于很多来住店的旅客有自己喜好的房间色调、阳光等,也有自己所爱的菜,但是该酒店只有p间房间,一天只有固定的q道不同的菜。
有一天来了n个客人,每个客人说出了自己喜欢哪些房间,喜欢哪道菜。但是很不幸,可能做不到让所有顾客满意(满意的条件是住进喜欢的房间,吃到喜欢的菜)。
这里要怎么分配,能使最多顾客满意呢?
输入输出格式 Input/output
输入格式:
第一行给出三个正整数表示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
题解:裸的网络流。别忘了把一个人拆成两个人。

#include
#include
using namespace std; const int INF=~0U>>2; int s=0,t; int n,p,q; int map[405][405]; int dis[405],sumd[405],now[405]; int fanhui[405],pre[405]; int ans=0; void init() { scanf("%d%d%d",&n,&p,&q); t=2*n+p+q+1; for (int i=1; i<=p; i++) map[0][i]=1; for (int i=1; i<=n; i++) map[i+p][i+p+n]=1; for (int i=1; i<=q; i++) map[i+p+n+n][t]=1; for (int i=1; i<=n; i++) for (int j=1; j<=p; j++) cin >> map[j][i+p]; for (int i=1; i<=n; i++) for(int j=1; j<=q; j++) cin >> map[i+p+n][j+p+n+n]; } void sap() { sumd[0]=t+1;//sumd[i]表示编号为i的点的数量 int i=s; now[i]=0;//now[i]表示i连接的点 int flow=INF; while (dis[s]
0 && dis[i]==dis[j]+1) { flag=true; if (map[i][j]
0) kk=dis[j]; sumd[dis[i]]--; if (sumd[dis[i]]==0) break;//如果标号出现断层也就不可能找到增广路 dis[i]=kk+1; sumd[dis[i]]++; flow=fanhui[i]; if (i!=0) i=pre[i]; } cout << ans; return; } int main() { init(); sap(); return 0; }

 

转载于:https://www.cnblogs.com/Shymuel/p/4393138.html

你可能感兴趣的文章
12月21日云栖精选夜读:阿里云总裁胡晓明:AI泡沫过后,下一站是“产业AI”...
查看>>
除了BAT,国内还有哪些值得关注的人工智能公司?
查看>>
一出好戏不止是部电影,它也正接近你的生活。
查看>>
1月23日云栖精选夜读:一张图解读阿里云数据管理DMS企业版
查看>>
spring cloud构建互联网分布式微服务云平台-docker部署spring cloud项目
查看>>
Deepmind顺练了人工智能14天成为星海2最强玩家
查看>>
Angular 表单验证类库 ngx-validator 1.0 正式发布
查看>>
刨根问底——Handler
查看>>
H5活动刮刮卡功能的实现与注意事项
查看>>
搞定Go单元测试(三)—— 断言(testify)
查看>>
web前端—面试2
查看>>
设计模式之 - 简单工厂模式
查看>>
前端如何搭建一个成熟的脚手架
查看>>
vue中v-for循环如何将变量带入class的属性名中
查看>>
PHP 安全问题入门:10 个常见安全问题 + 实例讲解
查看>>
Leetcode03
查看>>
Mysql常用命令
查看>>
Vuex的基本使用
查看>>
在DigitalOcean玩Kubernetes(K8S)
查看>>
python学习干货教程(11):元组
查看>>