【题解】 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 ...
 
随机推荐
- Eclipse-设置保存时自动给变量加final
			
也是针对checkstyle的,在代码检查规范时,所有的变量必须是final.为了解决这个问题,通过以下的设置可以在eclipse保存时,自动给没有加final的变量加上final. Window-& ...
 - hung task机制
			
最近在修改内核源码的时候一直出现格式化磁盘的时候,进程会出现状态D,看内核日志会看到如下信息: INFO: task filebench: blocked seconds. Oct :: localh ...
 - 20155202张旭 Exp7 网络欺诈技术防范
			
20155202张旭 Exp7 网络欺诈技术防范 基础问题回答 通常在什么场景下容易受到DNS spoof攻击? 在同一局域网下比较容易受到DNS spoof攻击,攻击者可以冒充域名服务器,来发送伪造 ...
 - 2017-2018-2 《网络对抗技术》 20155310 第二周 Exp1 PC平台逆向破解(5)M
			
2017-2018-2 <网络对抗技术> 20155310 第二周 Exp1 PC平台逆向破解(5)M 一.实践目标 1.1实践介绍 本次实践的对象是一个名为pwn1的linux可执行文件 ...
 - 赚钱的小生意,VC对你没兴趣
			
创业者,赚钱的生意就不要去找VC(风险投资)了,因为人家对你的生意没有兴趣. 无论是创业者,VC,股权投资散户,都需要对一个"生意"的规模有个总体的认识. 就"生意&qu ...
 - 汇编  REPNE/REPNZ指令,SCASW指令,SCASD指令,SCAS指令
			
知识点: REPNE/REPNZ 指令 SCASW 指令 SCASD 指令 SCAS 指令 一.SCASW 指令 //SCASB cmp word ptr [edi],al //对标志位的影响 ...
 - FormData 数据转化为 json 数据
			
两种方法 <!-- 实例:将 FormData 转化为 json --> <meta charset="utf-8"/> <form enctype= ...
 - 本地navicat远程连接到云服务器数据库
			
本来没有开启秘钥的远程服务器端数据库连接非常方便,就在新建连接上填入数据就ok了,但是开启SSH秘钥后的服务器连接有一个大坑,下面来详细讲讲. 其实开启了秘钥,在新建连接下,先选择SSH方式登录到远程 ...
 - Python基础知识(Basic knowledge)
			
Python基础知识(Basic knowledge) 1.认识Python&基础环境搭建 2.Python基础(上) 3.Python基础(中) 4.Python基础(下) 5.Python ...
 - setBit testBit权限管理
			
1.jdk7文档解释 public boolean testBit(int n) Returns true if and only if the designated bit is set. (Com ...