【题解】 Luogu P1402 酒店之王 (二分图匹配)
Solution:
- 这题没想到这么水,就是两个二分图而已
- 如果房间的二分图没匹配成功就直接进入下一个人
- 如果房间的二分图匹配成功,食物二分图匹配不成功就把房间的\(be[ ]\)数组还原,避免对后面匹配产生影响
- 都成功就直接\(Ans++\)就可以了,可能数据太水,感觉常数很大都过了
我才不会告诉你这道题目据说在洛谷有三倍经验
Code:
//It is coded by Ning_Mew on 3.18
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e2+7;
int n,p,q,ans=0;
int be[maxn],Be[maxn],pre[maxn];
bool vis[maxn];
int head[maxn],cnt=0;
int Head[maxn],Cnt=0;
struct ED{
int nxt,to;
}edge[maxn*maxn],Edge[maxn*maxn];
//edge -> room ; Edge -> food
void add(int from,int to,int num){
if(num==1){
edge[++cnt].nxt=head[from];
edge[cnt].to=to;
head[from]=cnt;
}
else{
Edge[++Cnt].nxt=Head[from];
Edge[Cnt].to=to;
Head[from]=Cnt;
}
}
//find1 -> room ; find2 -> food
bool find1(int k){
for(int i=head[k];i!=0;i=edge[i].nxt){
int v=edge[i].to;
if(!vis[v]){
vis[v]=true;
if(be[v]==-1||find1(be[v])){be[v]=k;return true;}
}
}return false;
}
bool find2(int k){
for(int i=Head[k];i!=0;i=Edge[i].nxt){
int v=Edge[i].to;
if(!vis[v]){
vis[v]=true;
if(Be[v]==-1||find2(Be[v])){Be[v]=k;return true;}
}
}return false;
}
int main(){
scanf("%d%d%d",&n,&p,&q);
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
int box;scanf("%d",&box);
if(box)add(i,j,1);
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
int box;scanf("%d",&box);
if(box)add(i,j,2);
}
}
memset(be,-1,sizeof(be));
memset(Be,-1,sizeof(Be));
for(int i=1;i<=n;i++){
memset(vis,false,sizeof(vis));
for(int j=1;j<=n;j++)pre[j]=be[j];
if(find1(i));else{continue;}
memset(vis,false,sizeof(vis));
if(find2(i))ans++;
else{for(int j=1;j<=n;j++)be[j]=pre[j];}
}
printf("%d\n",ans);
return 0;
}
【题解】 Luogu P1402 酒店之王 (二分图匹配)的更多相关文章
- 洛谷P1402 酒店之王(二分图)
P1402 酒店之王 题目描述 XX酒店的老板想成为酒店之王,本着这种希望,第一步要将酒店变得人性化.由于很多来住店的旅客有自己喜好的房间色调.阳光等,也有自己所爱的菜,但是该酒店只有p间房间,一天只 ...
- BZOJ 1711 吃饭dining/Luogu P1402 酒店之王 拆点+最大流流匹配
题意: (吃饭dining)有F种食物和D种饮料,每种食物或饮料只能供一头牛享用,且每头牛只享用一种食物和一种饮料.现在有n头牛,每头牛都有自己喜欢的食物种类列表和饮料种类列表,问最多能使几头牛同时享 ...
- luogu P1402 酒店之王
题目描述 XX酒店的老板想成为酒店之王,本着这种希望,第一步要将酒店变得人性化.由于很多来住店的旅客有自己喜好的房间色调.阳光等,也有自己所爱的菜,但是该酒店只有p间房间,一天只有固定的q道不同的菜. ...
- 【luogu P1402 酒店之王】 题解
题目链接:https://www.luogu.org/problemnew/show/P1402 菜 #include <queue> #include <cstdio> #i ...
- LUOGU P1402 酒店之王 (网络流)
解题思路 应该比较显然得能看出这是个网络流,将$S$与房间连边,房间与人连边,人与菜连边,菜与汇点连边,边的流量均为1.但这样是错误的,因为有可能一个人跑过去2的流量,所以要将人拆点限流. #incl ...
- 洛谷P2891 Dining P1402 酒店之王【类二分图匹配】题解+代码
洛谷P2891 Dining P1402 酒店之王[类二分图匹配]题解+代码 酒店之王 题目描述 XX酒店的老板想成为酒店之王,本着这种希望,第一步要将酒店变得人性化.由于很多来住店的旅客有自己喜好的 ...
- Luogu 1402 酒店之王(二分图最大匹配)
Luogu 1402 酒店之王(二分图最大匹配) Description XX酒店的老板想成为酒店之王,本着这种希望,第一步要将酒店变得人性化.由于很多来住店的旅客有自己喜好的房间色调.阳光等,也有自 ...
- P1402 酒店之王【网络流】【最大流】
P1402 酒店之王 提交 5.39k 通过 2.16k 时间限制 1.00s 内存限制 125.00MB 题目提供者yeszy 难度省选/NOI- 历史分数100 提交记录 查看题解 标签 福建省历 ...
- P1402 酒店之王
P1402 酒店之王 每个人要匹配一个A和一个B,所以这样连边: S向每个房间连边. 每个房间向喜欢这个房间的人连边. 每个人向喜欢的菜连边. 每道菜向T连边. 边权均为1. 注意人要限流. // I ...
随机推荐
- WPF Get jiayuan outbox list(send mail box)
Request URL: http://www.jiayuan.com/msg/outbox/list.php Request Method: POST form data: type=all&a ...
- vue-cli,build 后,报错的解决办法
报错如下图: 或: 解决办法:config / index.js 中,找到 build { assetsPublicPath: '/' },将其设置为:assetsPublicPath: './ ' ...
- P3426 [POI2005]SZA-Template
P3426 [POI2005]SZA-Template 链接 分析: 首先T一定是S的一个前缀,也是一个后缀. 判断一个前缀s[1...i]是不是满足条件,那么求出s[1...i]在s中出现的所有位置 ...
- Security5:授予权限
SQL Server授予用户访问对象的权限,通常的模式是:Grants permissions on a securable to a principal(user or login),也就是说,授予 ...
- BaseProxy:异步http/https中间人
BaseProxy 异步http/https代理,可拦截并修改报文,可以作为中间人工具.仅支持py3.5+.项目地址:BaseProxy. 意义 BaseProxy项目的本意是为了使HTTP/HTTP ...
- 【Android UI设计与开发】第03期:引导界面(三)仿微信引导界面以及动画效果
基于前两篇比较简单的实例做铺垫之后,这一篇我们来实现一个稍微复杂一点的引导界面的效果,当然也只是稍微复杂了一点,对于会的人来说当然还是so easy!正所谓会者不难,难者不会,大概说的就是这个意思了吧 ...
- LABVIEW串口通信基础
写这一篇串口通信基础的契机是最近刚刚完成一个温箱的仪器控制程序,LABVIEW通过串口与温箱单片机通讯,我打算将过程中遇到的一些问题和收获列在这里方便有需求的网友比对.寻找答案. 学LABVIEW时间 ...
- python 游戏(船只寻宝)
1. 游戏思路和流程图 实现功能:船只在可以在大海上移动打捞宝藏,船只可以扫描1格范围内的宝藏(后续难度,可以调整扫描范围,可以调整前进的格数) 游戏流程图 2. 使用模块和游戏提示 import r ...
- PAT甲题题解-1033. To Fill or Not to Fill (25)-模拟
模拟先说一下例子,最后为方便起见,在目的地安增加一个费用为0的加油站0 1 2 3 4 5 6 7 87.1 7.0 7.2 6.85 7.5 7.0 7.3 6.0 00 150 200 300 4 ...
- C++:同名隐藏和赋值兼容规则
一.同名隐藏 同名隐藏,即在C++的继承中,只要子类的函数名和父类的函数名相同,子类中的函数将会隐藏所有父类中和子类的成员函数同名的函数 特别注意: 和函数之间的重载不同,这里只要求函数的名字相同,而 ...