洛谷 P2055 【假期的宿舍】
- 题库 :洛谷
- 题号 :2055
- 题目 :假期的宿舍
- link :https://www.luogu.org/problem/P2055
首先明确一下:校内的每个学生都有一张床(只是校内的有)
思路 :分析题目发现是求所有在校学生能否全部有床睡(注意:只需在校学生有床睡,及不回家的;这个床可以是自己的,也可以是朋友的);于是,这道题我们可以把它想象成一个二分图,如样例图:
a -> b表示a可以睡b的床(注意:虽然样例中没有2 -> 2的边,但你仔细读题就会发现题目中的原话---)
由于题目里给的是一个邻接矩阵,我们便可以无视蓝点所连出去的边,只用红点去搜就行了(代码里写了也不要紧)
代码 :
#include <bits/stdc++.h>
#define INF 0x3f3f3f3f
using namespace std;
int T, n, head[], num, vis[], choose[], q[], w[], ans, cnt;
struct node
{
int next, to;
}stu[];
inline void add(int x, int y)//链式前向星
{
stu[++num].next = head[x];
stu[num].to = y;
head[x] = num;
return;
}
inline int dfs(int u)//二分图匈牙利算法模板
{
for(register int i = head[u]; i; i = stu[i].next)
{
int k = stu[i].to;
if(vis[k])
{
continue;
}
vis[k] = ;
if(!choose[k] || dfs(choose[k]))
{
choose[k] = u;
return ;
}
}
return ;
}
signed main()
{
scanf("%d", &T);
while(T--)//多组数据
{
memset(choose, , sizeof(choose));//初始化
memset(head, , sizeof(head));
num = ;
ans = ;
cnt = ;
scanf("%d", &n);
for(register int i = ; i <= n; ++i)
{
scanf("%d", &q[i]);
}
for(register int i = ; i <= n; ++i)
{
scanf("%d", &w[i]);
if(q[i] && !w[i])//如果他是本校学生&&他不回家
{
add(i, i);//自己可以睡自己的床
}
}
for(register int i = ; i <= n; ++i)
{
for(register int j = , x; j <= n; ++j)
{
scanf("%d", &x);
if(x)
{
if(q[i])//如果i是本校学生(及有一张床)
{
add(j, i);//j也可以睡
}
if(q[j])//同理
{
add(i, j);
}
}
}
}
for(register int i = ; i <= n; ++i)
{
if(q[i] && w[i])//如果是本校学生&&不留在学校(如果是外校的就不可能回家啊)
{
++cnt;//记录一下有多少个,以后算答案方便
continue;//不用管他有没有床
}
memset(vis, , sizeof(vis));
if(!dfs(i))//如果有一个学生没有床
{
printf("T_T\n");//哭了
break;
}
else
{
++ans;//记录有床的学生数量
}
}
if(ans == n - cnt)//如果留学校的人都有床
{
printf("^_^\n");//笑了
}
}
return ;
}
洛谷 P2055 【假期的宿舍】的更多相关文章
- 洛谷 - P2055 - 假期的宿舍 - 最大流
https://www.luogu.org/problemnew/show/P2055 这是一个错误的示范. 一开始觉得就找一条路从外校同学连到本校同学然后最终从周末回家的同学流出,每个人睡后一个人的 ...
- 【二分图】洛谷P2055假期的宿舍
题目描述 学校放假了 · · · · · · 有些同学回家了,而有些同学则有以前的好朋友来探访,那么住宿就是一个问题.比如 A 和 B 都是学校的学生,A 要回家,而 C 来看B,C 与 A 不认识. ...
- 洛谷P2055假期的宿舍
题目 此题主要是考察二分图匹配,而二分图匹配最主要的就是建图,而图一般都是要分成两个部分来分,比如该题就需要先将在学校住的人和床连在一起,因为在学校住就会与一个床.然后每两个人之间假如他们相互认识就可 ...
- 洛谷 p2055 假期的宿舍 题解
好长时间没更博客了 因为实在太蒻了 这让本蒟蒻怎么办 今天终于遇到了一道模板题(之前也有,不过太蒻了都不会) 不过...写代码5分钟,调试2小时 分界线:回归正题 这个就是普通的匈牙利算法 差不多 思 ...
- 洛谷P2756飞行员配对方案问题 P2055假期的宿舍【二分图匹配】题解+代码
洛谷 P2756飞行员配对方案问题 P2055假期的宿舍[二分图匹配] 飞行员配对方案问题 题目背景 第二次世界大战时期.. 题目描述 英国皇家空军从沦陷国征募了大量外籍飞行员.由皇家空军派出的每一架 ...
- 洛谷 P2055 [ZJOI2009]假期的宿舍
洛谷 P2055 题目描述 学校放假了 · · · · · · 有些同学回家了,而有些同学则有以前的好朋友来探访,那么住宿就是一个问题.比如 A 和 B 都是学校的学生,A 要回家,而 C 来看B,C ...
- 洛谷P2055 [ZJOI2009]假期的宿舍
P2055 [ZJOI2009]假期的宿舍 题目描述 学校放假了 · · · · · · 有些同学回家了,而有些同学则有以前的好朋友来探访,那么住宿就是一个问题.比如 A 和 B 都是学校的学生,A ...
- 洛谷——P2055 [ZJOI2009]假期的宿舍
P2055 [ZJOI2009]假期的宿舍 学校放假了 · · · · · · 有些同学回家了,而有些同学则有以前的好朋友来探访,那么住宿就是一个问题.比如 A 和 B 都是学校的学生,A 要回家,而 ...
- 洛谷 P2055 [ ZJOI 2009 ] 假期的宿舍 —— 二分图匹配
题目:https://www.luogu.org/problemnew/show/P2055 二分图匹配: 注意要连边的话对方必须有床! 代码如下: #include<iostream> ...
随机推荐
- C#航空查询及预订
关于航空查询及预订项目中出现的问题 namespace Flight{ public partial class Flight : Form { public Flight() { Initializ ...
- rm -rf /*时遇到的趣事
今天在一个linux群里面闲逛的时候,突然看见一个愤青把自己的linux系统给 rm -rf /* 了 ,感觉很好玩就看了一下,突然我发现了有趣的事情! 我的朋友问我,这个为什么显示没有删除,我看了确 ...
- Nginx 的简单使用 (IIS,Asp.Net)
Nginx 的一些常见功能(windows,AspNet ,IIS) 下载 官方网站:https://nginx.org/en/download.html 下载,解压缩是这个样子 启动: 启动方式有两 ...
- Python—三目运算
Python 可通过 if 语句来实现三目运算的功能,因此可以近似地把这种 if 语句当成三目运算符.作为三目运算符的 if 语句的语法格式如下: (True_statements) if (expr ...
- Python—推导式
推导式 推导式:comprehensions(又称解析式),是Python的一种独有特性,相当于语法糖的存在,推导式是可以从一个数据序列构建另一个新的数据序列的结构体. 共有三种推导,在Python2 ...
- 伽马变换(一些基本的灰度变换函数)基本原理及Python实现
1. 基本原理 变换形式 $$s=cr^{\gamma}$$ c与$\gamma$均为常数 可通过调整$\gamma$来调整该变换,最常用于伽马校正与对比度增强 2. 测试结果 图源自skimage ...
- manifest.json 解析--手机web app开发笔记(三-1)
在HBuilderX生成的文档中,还有一个“manifest.json”,只要是创建“移动App”应用,都会在工程下生成这个文件,一看扩展名就知道他是一个json格式文件,文件文件根据w3c的weba ...
- java中什么是继承笔记
继承 怎样实现继承:1,先提取共有的属性和方法,放到一个类里,这个叫父类.基类.超类 2.编写子类 修饰符 class 子类名 extends 父类名 好处:提高代码的复用性 子类怎么去 ...
- Kafka集群配置---Windows版
Kafka是一种高吞吐量的分布式发布订阅的消息队列系统,Kafka对消息进行保存时是通过tipic进行分组的.今天我们仅实现Kafka集群的配置.理论的抽空在聊 前言 最近研究kafka,发现网上很多 ...
- 使用bibtex为latex论文添加参考文献
此文以引用Shannon的Prediction and Entropy of Printed English为例 1. bib文件 1.1 准备工作 进入Google Scholar 点击设置 ...