懒得复制,原题目戳我

Solution:

  • 这题没想到这么水,就是两个二分图而已
  • 如果房间的二分图没匹配成功就直接进入下一个人
  • 如果房间的二分图匹配成功,食物二分图匹配不成功就把房间的\(be[ ]\)数组还原,避免对后面匹配产生影响
  • 都成功就直接\(Ans++\)就可以了,可能数据太水,感觉常数很大都过了

    我才不会告诉你这道题目据说在洛谷有三倍经验

Code:

  1. //It is coded by Ning_Mew on 3.18
  2. #include<bits/stdc++.h>
  3. using namespace std;
  4. const int maxn=1e2+7;
  5. int n,p,q,ans=0;
  6. int be[maxn],Be[maxn],pre[maxn];
  7. bool vis[maxn];
  8. int head[maxn],cnt=0;
  9. int Head[maxn],Cnt=0;
  10. struct ED{
  11. int nxt,to;
  12. }edge[maxn*maxn],Edge[maxn*maxn];
  13. //edge -> room ; Edge -> food
  14. void add(int from,int to,int num){
  15. if(num==1){
  16. edge[++cnt].nxt=head[from];
  17. edge[cnt].to=to;
  18. head[from]=cnt;
  19. }
  20. else{
  21. Edge[++Cnt].nxt=Head[from];
  22. Edge[Cnt].to=to;
  23. Head[from]=Cnt;
  24. }
  25. }
  26. //find1 -> room ; find2 -> food
  27. bool find1(int k){
  28. for(int i=head[k];i!=0;i=edge[i].nxt){
  29. int v=edge[i].to;
  30. if(!vis[v]){
  31. vis[v]=true;
  32. if(be[v]==-1||find1(be[v])){be[v]=k;return true;}
  33. }
  34. }return false;
  35. }
  36. bool find2(int k){
  37. for(int i=Head[k];i!=0;i=Edge[i].nxt){
  38. int v=Edge[i].to;
  39. if(!vis[v]){
  40. vis[v]=true;
  41. if(Be[v]==-1||find2(Be[v])){Be[v]=k;return true;}
  42. }
  43. }return false;
  44. }
  45. int main(){
  46. scanf("%d%d%d",&n,&p,&q);
  47. for(int i=1;i<=n;i++){
  48. for(int j=1;j<=n;j++){
  49. int box;scanf("%d",&box);
  50. if(box)add(i,j,1);
  51. }
  52. }
  53. for(int i=1;i<=n;i++){
  54. for(int j=1;j<=n;j++){
  55. int box;scanf("%d",&box);
  56. if(box)add(i,j,2);
  57. }
  58. }
  59. memset(be,-1,sizeof(be));
  60. memset(Be,-1,sizeof(Be));
  61. for(int i=1;i<=n;i++){
  62. memset(vis,false,sizeof(vis));
  63. for(int j=1;j<=n;j++)pre[j]=be[j];
  64. if(find1(i));else{continue;}
  65. memset(vis,false,sizeof(vis));
  66. if(find2(i))ans++;
  67. else{for(int j=1;j<=n;j++)be[j]=pre[j];}
  68. }
  69. printf("%d\n",ans);
  70. return 0;
  71. }

【题解】 Luogu P1402 酒店之王 (二分图匹配)的更多相关文章

  1. 洛谷P1402 酒店之王(二分图)

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

  2. BZOJ 1711 吃饭dining/Luogu P1402 酒店之王 拆点+最大流流匹配

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

  3. luogu P1402 酒店之王

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

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

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

  5. LUOGU P1402 酒店之王 (网络流)

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

  6. 洛谷P2891 Dining P1402 酒店之王【类二分图匹配】题解+代码

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

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

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

  8. P1402 酒店之王【网络流】【最大流】

    P1402 酒店之王 提交 5.39k 通过 2.16k 时间限制 1.00s 内存限制 125.00MB 题目提供者yeszy 难度省选/NOI- 历史分数100 提交记录 查看题解 标签 福建省历 ...

  9. P1402 酒店之王

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

随机推荐

  1. Android SDK版本号与API Level 的对应关系-转

    Android SDK版本号 与 API Level 对应关系 http://developer.android.com/guide/appendix/api-levels.html Android ...

  2. Python3入门(六)——函数式编程

    一.高阶函数 1.可以通过变量指向函数,达到类似别名的效果: >>> f = abs >>> f(-10) 10 2.函数的参数可以是函数,也就是函数可以作为一个入 ...

  3. 《网络对抗》Exp5 MSF基础应用

    20155336<网络对抗>Exp5 MSF基础应用 一.基础知识回答 用自己的话解释什么是exploit,payload,encode exploit:渗透攻击的模块合集,将真正要负责攻 ...

  4. 汇编 switch case

    知识点: switch case生成的汇编框架 逆向汇编代码还原成C++代码 一.了解switch case结构 .普通情况 |. 83C4 ADD ESP, |. C745 FC >MOV ...

  5. LOJ#6354. 「CodePlus 2018 4 月赛」最短路[最短路优化建图]

    题意 一个 \(n\) 个点的完全图,两点之间的边权为 \((i\ xor\ j)*C\) ,同时有 \(m\) 条额外单向路径,问从 \(S\) 到 \(T\) 的最短路. \(n\leq 10^5 ...

  6. C#集合与泛型集合

    看到这个标题,大家应该就知道有泛型集合,就有非泛型集合 既然都是集合,咱们今儿就简单的来对比讲解下 需要记住的不算太多,理解记忆.理解记忆 2017-11-0411:39:09 C# 泛型集合之非泛型 ...

  7. 线状地物图斑化全流程作业(使用ArcMap软件)

    一.线状地物调整 1.添加全覆盖图斑数据 2.添加线状地物 3.添加地理图斑 4.添加村界 5.剪裁自己村界的线状地物得(地理处理/剪裁(输入要素为线状地物,剪裁要素为村界,输出要素是得到的新层位置) ...

  8. 贪心算法HURUST题目

    题目描述: Yogurt factory The cows have purchased a yogurt factory that makes world-famous Yucky Yogurt. ...

  9. python基础面试题

    函数1def foo(arg,li=[]): li.append(arg) return li list1 = foo(21) list2 = foo(11,[2]) list3 = foo(28) ...

  10. 金蝶盘点机PDA条码数据采集器WMS系统具体有哪些功能

    1.  使用汉码盘点机PDA实现仓库条码管理的好处 (1)  传统电脑管理软件出入库需要来回电脑跑人工手工电脑录单效率低,通过人眼识别商品品种和清点商品数量,容易造成录单错误.从而造成电脑管理软件库存 ...