【题解】 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 ...
随机推荐
- C 语言的关键字static 和C++ 的关键字static 有什么区别
C 中static 用来修饰局部静态变量和外部静态变量.函数. C++中除了上述功能外,还用来定义类的成员变量和函数.即静态成员和静态成员函数. 注意:编程时 static的记忆性,和全局性的特点可以 ...
- XML 的4种解析方式
在上一篇博客中,我们介绍了什么是 XML ,http://www.cnblogs.com/ysocean/p/6901008.html,那么这一篇博客我们介绍如何来解析 XML . 部分文档引用:ht ...
- Codeforces Round #503 Div1+Div2 1019&1020
https://winniechen.cn/?p=188 这个还是直接放链接吧,毕竟内容比较多...
- Mapreduce -- PageRank
PageRank 简单理解为网页排名,但是网页是根据什么排名的,接下来就简单介绍一下. 举例: 假设网页 A 的内容中有网页 B,C 和 D 的链接,并且 A 的 PageRank的值为0.25. 那 ...
- R语言入门 :基本数据结构
1.向量 向量是R语言中最基本的数据类型,在R语言中没有单独的变量. (1) 创建向量 R语言中可以用 = 或者 <- 来赋值. 向量名 <- 向量 或 向量名 = 向量 向量的创建方 ...
- 为你的机器学习模型创建API服务
1. 什么是API 当调包侠们训练好一个模型后,下一步要做的就是与业务开发组同学们进行代码对接,以便这些‘AI大脑’们可以顺利的被使用.然而往往要面临不同编程语言的挑战,例如很常见的是调包侠们用Pyt ...
- 如何完全卸载VS2010(亲自体验过) (转)
1.首先用360卸载,当卸载完成后,提示有残余的话,就强力清除 2,接着,下载IobitUninstaller工具 3.按照下面进行卸载 1.Microsoft .NET Framework 4 框架 ...
- github协同开发
看官请移步GitHub团队项目合作流程 本文是上述链接的截图,担心哪天作者不小心删除了,备一份在自己这里,仅为自己看着方便.侵权请告知
- 真机调试傻瓜图文教程(Xcode6.4)
先准备好99刀,真机调试才带你玩. PS:万能宝十来块钱可以买个资格... Developer Apple上的设置 1.打开https://developer.apple.com/,点击Member ...
- 浅谈 iOS 中的 Activity Indicator
Activity Indicator 是iOS开发中必不可少的一个视图.本文就简单地总结一下这个Activity Indicator 的使用方法. 默认 Activity Indicator 以下的函 ...