p2055&bzoj1433 假期的宿舍
题目
Input
Output
对于每组数据,如果存在一个方案则输出“^_^”(不含引号)否则输出“T_T”(不含引号)。
Sample Input
3
1 1 0
0 1 0
0 1 1
1 0 0
1 0 0
Sample Output
分析
这是一个二分图匹配问题,我们将所有不回家的在校学生和来看他们的人作为左面,将他们与所有在校学生匹配,如果全能匹配则可以,否则不行,注意如果需匹配的人数大于总床数则一定不行
代码
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<cctype>
#include<cmath>
#include<cstdlib>
#include<queue>
#include<ctime>
#include<vector>
#include<set>
#include<map>
#include<stack>
using namespace std;
int in[];
int used[],g[][],wh[],n,m,a[],b[],t;
inline bool work(int x){
for(int i=;i<=m;i++)
if(used[i]!=t&&g[a[x]][b[i]]){
used[i]=t;
if(!wh[i]||work(wh[i])){
wh[i]=x;
return ;
}
}
return ;
}
inline bool go(){
if(n>m)return ;
for(int i=;i<=n;i++){
t=i;
if(!work(i))return ;
}
return ;
}
int main()
{ int i,j,k,t;
scanf("%d",&t);
while(t--){
memset(used,,sizeof(used));
memset(g,,sizeof(g));
memset(wh,,sizeof(wh));
memset(in,,sizeof(in));
n=,m=;
scanf("%d",&k);
for(i=;i<=k;i++){
scanf("%d",&j);
if(j)b[++m]=i,in[i]=;
else a[++n]=i;
}
for(i=;i<=k;i++){
scanf("%d",&j);
if(!in[i])continue;
if(!j)a[++n]=i;
}
for(i=;i<=k;i++)
for(j=;j<=k;j++){
scanf("%d",&g[i][j]);
if(in[i]&&i==j)g[i][j]=;
}
if(go())printf("^_^\n");
else printf("T_T\n");
}
return ;
}
p2055&bzoj1433 假期的宿舍的更多相关文章
- 洛谷P2055 [ZJOI2009]假期的宿舍
P2055 [ZJOI2009]假期的宿舍 题目描述 学校放假了 · · · · · · 有些同学回家了,而有些同学则有以前的好朋友来探访,那么住宿就是一个问题.比如 A 和 B 都是学校的学生,A ...
- 洛谷——P2055 [ZJOI2009]假期的宿舍
P2055 [ZJOI2009]假期的宿舍 学校放假了 · · · · · · 有些同学回家了,而有些同学则有以前的好朋友来探访,那么住宿就是一个问题.比如 A 和 B 都是学校的学生,A 要回家,而 ...
- P2055 [ZJOI2009]假期的宿舍 题解(二分图)
题目链接 P2055 [ZJOI2009]假期的宿舍 解题思路 因为懒,提供一种不连边,直接根据题目给出的邻接矩阵进行匈牙利算法的思路. \(a[i][j]\)表示\(i\)能不能睡\(j\)的床,需 ...
- 洛谷 P2055 【假期的宿舍】
题库 :洛谷 题号 :2055 题目 :假期的宿舍 link :https://www.luogu.org/problem/P2055 首先明确一下:校内的每个学生都有一张床(只是校内的有) 思路 : ...
- BZOJ-1433 假期的宿舍 最大流+基础建图
网络流练习ing.. 1433: [ZJOI2009]假期的宿舍 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 1748 Solved: 765 [S ...
- 洛谷 P2055 [ZJOI2009]假期的宿舍
洛谷 P2055 题目描述 学校放假了 · · · · · · 有些同学回家了,而有些同学则有以前的好朋友来探访,那么住宿就是一个问题.比如 A 和 B 都是学校的学生,A 要回家,而 C 来看B,C ...
- 洛谷P2055 [ZJOI2009]假期的宿舍 题解
题目链接: https://www.luogu.org/problemnew/show/P2055 分析: 这道题比较简单,二分图的练习题(当然最大流同理). 易得我们可以将人放在一侧,床放在一侧. ...
- 洛谷P2055 [ZJOI2009]假期的宿舍 [二分图最大匹配]
题目描述 学校放假了 · · · · · · 有些同学回家了,而有些同学则有以前的好朋友来探访,那么住宿就是一个问题.比如 A 和 B 都是学校的学生,A 要回家,而 C 来看B,C 与 A 不认识. ...
- P2055 [ZJOI2009]假期的宿舍
思路 看到复杂的匹配条件,发现要让一个人和一个床匹配,所以就每个有床的人(指本校学生)和t连一条边,每个需要床的人(指外校的人和不回家的人)和s连一条边,i和j互相认识就把i和j的床连在一起,自己和自 ...
随机推荐
- 通过代码设置资源名字,为打包AssetBundle做准备,以及新打包系统
核心代码就是 importer.assetBundleName = name; 但是在这之前,我们需要超找到具体的资源,我们当然是不希望一个一个手动去查找.如果我选择一个文件夹,就可以查找到里边所 ...
- 算法(Algorithms)第4版 练习 2.2.11(2)
关键代码: private static void sort(Comparable[] input, int lo, int hi) { if(lo >= hi)//just one entry ...
- JAVA NIO之浅谈内存映射文件原理与DirectMemory
JAVA类库中的NIO包相对于IO 包来说有一个新功能是内存映射文件,日常编程中并不是经常用到,但是在处理大文件时是比较理想的提高效率的手段.本文我主要想结合操作系统中(OS)相关方面的知识介绍一下原 ...
- 仿联想商城laravel实战---2、后端页面搭建(验证码如何在页面中使用)
仿联想商城laravel实战---2.后端页面搭建(验证码如何在页面中使用) 一.总结 一句话总结: 放在img里面,img的src就是生产验证码的控制器路径: img src="/admi ...
- 使用virtualenv构建python虚拟环境
hb@hb-pc ~ $ virtualenv --python=python3 --no-site-packages test Running virtualenv with interpreter ...
- Java_数据交换_dom4j_01_解析xml
1.说明 详细原理以后再研究,先将例子存着 2.代码 2.1 xml内容 <?xml version="1.0" encoding="UTF-8"?> ...
- 大白话AOP
工作一年多后, 第二次看了韩顺平老师讲的AOP (11年的Spring 教学视频) AOP还是比较艰涩的东西. 从刚开始 碰Java项目去找书看开始, 到学了拦截器知道AOP就是处理事务, 日志, 安 ...
- 机器学习 Generative Learning Algorithm (A)
引言 前面几讲,我们主要探讨了如何对 p(y|x;θ) (即y 相对于x的条件概率)进行建模的几种学习算法,比如,logistic regression 对 p(y|x;θ) 进行建模的假设函数为 h ...
- bzoj 2732: [HNOI2012]射箭 半平面交
题目大意: http://www.lydsy.com/JudgeOnline/problem.php?id=2732 题解: 这道题的做法我不想说什么了... 其他题解都有说做法... 即使是我上午做 ...
- 【LeetCode】020. Valid Parentheses
Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the inpu ...