[Luogu 1402] 酒店之王

时间:2022-09-17 20:06:48

题目

Description

XX酒店的老板想成为酒店之王,本着这种希望,第一步要将酒店变得人性化。由于很多来住店的旅客有自己喜好的房间色调、阳光等,也有自己所爱的菜,但是该酒店只有p间房间,一天只有固定的q道不同的菜。

有一天来了n个客人,每个客人说出了自己喜欢哪些房间,喜欢哪道菜。但是很不幸,可能做不到让所有顾客满意(满意的条件是住进喜欢的房间,吃到喜欢的菜)。

这里要怎么分配,能使最多顾客满意呢?

Input

第一行给出三个正整数表示n,p,q(<=100)。

之后n行,每行p个数包含0或1,第i个数表示喜不喜欢第i个房间(1表示喜欢,0表示不喜欢)。

之后n行,每行q个数,表示喜不喜欢第i道菜。

Output

最大的顾客满意数。

Solution

第一眼看到就是网络流,但是怎么保证每个人不会被重复(分身)利用,每间房子和每道菜都只用一次呢?

拆点。

但是最开始的思路繁琐了很多,不是把人当做中间点,而是把菜和房间都当作中间点拆开,然后再把人拆开。。

这样的做法好sb,结果莫名 wa 了三个点,于是瞟了一眼题解,说把人当作中间点,这样只拆人即可。

恍然大悟,从超级源点向每道菜连流量为 1 的边,说明一道菜只能被用一次,同理,从每个房间向超级汇点连流量为 1 的边。然后把人拆点即可。

好题啊~

Code

// By YoungNeal
#include<queue> #include<cstdio> #include<cstring> #include<iostream> using namespace std; int s,t,flow; ]; ]; ]; ; struct Edge{ int to,nxt,flow; }edge[]; void add(int x,int y,int z){ edge[++cnt].to=y; edge[cnt].nxt=head[x]; edge[cnt].flow=z; head[x]=cnt; } bool bfs(){ queue<int> q; memset(a,,sizeof a); a[s]=0x3f3f3f3f; q.push(s); while(q.size()){ int u=q.front();q.pop(); for(int i=head[u];i;i=edge[i].nxt){ int to=edge[i].to; if(!edge[i].flow) continue; if(a[to]) continue; a[to]=min(a[u],edge[i].flow); pre[to]=i; q.push(to); } } ; flow+=a[t]; ; } void update(){ int m=t; ].to) edge[pre[m]].flow-=a[t],edge[pre[m]^].flow+=a[t]; } signed main(){ scanf("%d%d%d",&n,&p,&q); s=*n+q+p+,t=s+; ;i<=n;i++){ ;j<=p;j++){ scanf("%d",&x); ) continue; add(j,p+i,); add(p+i,j,); } } ;i<=n;i++){ ;j<=q;j++){ scanf("%d",&x); ) continue; add(p+n+q+i,p+n+j,); add(p+n+j,p+n+q+i,); } } ;i<=n;i++) add(p+i,p+n+q+i,),add(p+n+q+i,p+i,); ;i<=p;i++) add(s,i,),add(i,s,); +n;i<=p+n+q;i++) add(i,t,),add(t,i,); while(bfs()) update(); printf("%d",flow); ; }

[Luogu 1402] 酒店之王的更多相关文章

  1. Luogu 1402 酒店之王(二分图最大匹配)

    Luogu 1402 酒店之王(二分图最大匹配) Description XX酒店的老板想成为酒店之王,本着这种希望,第一步要将酒店变得人性化.由于很多来住店的旅客有自己喜好的房间色调.阳光等,也有自 ...

  2. luogu P1402 酒店之王

    题目描述 XX酒店的老板想成为酒店之王,本着这种希望,第一步要将酒店变得人性化.由于很多来住店的旅客有自己喜好的房间色调.阳光等,也有自己所爱的菜,但是该酒店只有p间房间,一天只有固定的q道不同的菜. ...

  3. BZOJ 1711 吃饭dining&sol;Luogu P1402 酒店之王 拆点&plus;最大流流匹配

    题意: (吃饭dining)有F种食物和D种饮料,每种食物或饮料只能供一头牛享用,且每头牛只享用一种食物和一种饮料.现在有n头牛,每头牛都有自己喜欢的食物种类列表和饮料种类列表,问最多能使几头牛同时享 ...

  4. 【luogu P1402 酒店之王】 题解

    题目链接:https://www.luogu.org/problemnew/show/P1402 菜 #include <queue> #include <cstdio> #i ...

  5. 洛谷&dollar;P&dollar;1402 酒店之王 网络流

    正解:网络流 解题报告: 传送门! 一看就很网络流昂,,,于是现在的问题就变成怎么建图了$QwQ$ 首先如果只有一个要求,那就直接按要求建图然后跑个最大流就好. 现在变成,有两个要求,必须同时满足,考 ...

  6. 【题解】 Luogu P1402 酒店之王 (二分图匹配)

    懒得复制,原题目戳我 Solution: 这题没想到这么水,就是两个二分图而已 如果房间的二分图没匹配成功就直接进入下一个人 如果房间的二分图匹配成功,食物二分图匹配不成功就把房间的\(be[ ]\) ...

  7. LUOGU P1402 酒店之王 &lpar;网络流&rpar;

    解题思路 应该比较显然得能看出这是个网络流,将$S$与房间连边,房间与人连边,人与菜连边,菜与汇点连边,边的流量均为1.但这样是错误的,因为有可能一个人跑过去2的流量,所以要将人拆点限流. #incl ...

  8. P1402 酒店之王

    P1402 酒店之王 每个人要匹配一个A和一个B,所以这样连边: S向每个房间连边. 每个房间向喜欢这个房间的人连边. 每个人向喜欢的菜连边. 每道菜向T连边. 边权均为1. 注意人要限流. // I ...

  9. 洛谷P2891 Dining P1402 酒店之王【类二分图匹配】题解&plus;代码

    洛谷P2891 Dining P1402 酒店之王[类二分图匹配]题解+代码 酒店之王 题目描述 XX酒店的老板想成为酒店之王,本着这种希望,第一步要将酒店变得人性化.由于很多来住店的旅客有自己喜好的 ...

随机推荐

  1. RESTful Web Services初探

    RESTful Web Services初探 作者:杜刚 近几年,RESTful Web Services渐渐开始流行,大量用于解决异构系统间的通信问题.很多网站和应用提供的API,都是基于RESTf ...

  2. &lbrack;Asp&period;net 5&rsqb; DependencyInjection项目代码分析

    最近在研究开源代码,正好发现Asp.net5的源码,下载地址:https://github.com/aspnet. 今天主要讲的是DependencyInjection这部分,抛砖引玉,供大家参考,也 ...

  3. sharepoint 权限继承相关

    重新继承父级权限: SPList.ResetRoleInheritance(); 断开继承: SPList.BreakRoleInheritance(true); 用powershell断开继承: $ ...

  4. 导出Excel之Epplus使用教程1(基本介绍)

    1.前言 目前Epplus的介绍中文资料很少,我也一直在摸索中使用它,以下是我在使用过程中得到的经验,写出来供大家参考.本系列共4章: 导出Excel之Epplus使用教程1(基本介绍) 导出Exce ...

  5. POJ 2105

    #include <iostream> #include <cmath> #include <string> using namespace std; int ma ...

  6. 分享最近和同事处理的 解析XML的相关问题

    CREATE OR REPLACE PROCEDURE BATCHINSERTSK_DEVICE_RECORD1(      xmlstr  IN clob,          v_commits o ...

  7. 卡特兰数 Catalan数 &lpar; ACM 数论 组合 &rpar;

    卡特兰数 Catalan数 ( ACM 数论 组合 ) Posted on 2010-08-07 21:51 MiYu 阅读(13170) 评论(1)  编辑 收藏 引用 所属分类: ACM ( 数论 ...

  8. List的多维度排序案例演示~

    文章也已同步到我的csdn:http://blog.csdn.net/u012881584/article/details/72377510 关于List的多维度排序. 日常工作中有很多关于list的 ...

  9. 【http转https】其之三 IIS&lowbar;URL重写&lowbar;http重定向到https

    IIS_URL重写_http重定向到https 文:铁乐猫 2016年1月14日 IIS7以上支持URL Rewrite这个模块了,所以在我们做好了ssl证书这一块之后, 要对来自http的请求重定向 ...

  10. linux上遇到tomcat报Out of Memory错误,导致jenkins崩溃的问题

    今天遇到一个问题,就是JENKINS在同时部署两个前端应用时会出现崩溃的现象. 排查过程如下 查看tomcat-jenkins/bin/hs_err_pid27127.log发现: Out of Me ...