题解 【ZJOI2009】 假期的宿舍
题面
解析
这其实就是个二分图匹配的水题(虽然我还是爆零了)
这题的意思就是说,有x个人,y张床(x,y不确定),
每个人只能睡在指定的几张床上,
问能否使每人都有床睡。
所以,直接二分图匹配,看最大匹配是否大于行了啊啊!(当然,用网络流也可以。)
然而,却出现了一些玄学错误(导致本次考试全体爆零)。
所以,我来总结一下:
- 多组数据要记得清零!
- 注意如果第 i 个人不是在校学生,那么这个位置上的数是一个随机的数,应该在读入以后忽略它
- 连边的时候要住意有些校外的人没床。
然后就能AC了!
上AC代码(虽然感觉没什么用):
#include<bits/stdc++.h>
using namespace std; inline int read(){
int sum=,f=;char ch=getchar();
while(ch>'' || ch<''){if(ch=='-')f=-;ch=getchar();}
while(ch>='' && ch<=''){sum=sum*+ch-'';ch=getchar();}
return f*sum;
} struct node{
int next,to;
}e[];
int T;
int n,s[]/*是否在校*/,a[]/*是否回家*/;
int m,head[],cnt=;
int f[][];
int linker[],vis[]; void add(int x,int y){
e[++cnt].to=head[x];
e[cnt].next=y;
head[x]=cnt;
} bool dfs(int x){
for(int i=head[x];i;i=e[i].to){
int k=e[i].next;
if(vis[k]) continue;
vis[k]=;
if(linker[k]==-||dfs(linker[k])){
linker[k]=x;
return ;
}
}
return ;
} bool hungarian(int m){
memset(linker,-,sizeof(linker));
int sum=;
for(int i=;i<=n;i++){
if(!a[i]){
memset(vis,,sizeof(vis));
if(dfs(i)) sum++;
}
}
if(sum>=m) return ;
return ;
} int main(){
// freopen("dormitory.in","r",stdin);
// freopen("dormitory.out","w",stdout);
T=read();
while(T--){
memset(head,,sizeof(head));
memset(e,,sizeof(e));
memset(f,,sizeof(f));
memset(a,,sizeof(a));
cnt=;
n=read();m=n;
for(int i=;i<=n;i++)
s[i]=read();
for(int i=;i<=n;i++){
int x=read();
if(s[i]) a[i]=x;
}
for(int i=;i<=n;i++) m-=a[i];
for(int i=;i<=n;i++){
for(int j=;j<=n;j++){
f[i][j]=read();
}
f[i][i]=;
}
for(int i=;i<=n;i++){
for(int j=;j<=n;j++){
if(f[i][j]&&s[j]) add(i,j+n);
}
}
if(hungarian(m)) printf("%c%c%c\n",,,);
else printf("T_T\n");
}
return ;
}
题解 【ZJOI2009】 假期的宿舍的更多相关文章
- P2055 [ZJOI2009]假期的宿舍 题解(二分图)
题目链接 P2055 [ZJOI2009]假期的宿舍 解题思路 因为懒,提供一种不连边,直接根据题目给出的邻接矩阵进行匈牙利算法的思路. \(a[i][j]\)表示\(i\)能不能睡\(j\)的床,需 ...
- bzoj 1433: [ZJOI2009]假期的宿舍
1433: [ZJOI2009]假期的宿舍 Description Input Output Sample Input 1 3 1 1 0 0 1 0 0 1 1 1 0 0 1 0 0 Sample ...
- [BZOJ1433][luogu_P2055][ZJOI2009]假期的宿舍
[BZOJ1433][luogu_P2055][ZJOI2009]假期的宿舍 试题描述 输入 输出 输入示例 1 3 1 1 0 0 1 0 0 1 1 1 0 0 1 0 0 输出示例 ^_^ 数据 ...
- bzoj1433: [ZJOI2009]假期的宿舍(最大二分图匹配)
1433: [ZJOI2009]假期的宿舍 题目:传送门 题解: 这题有点水 跑个二分图匹配就完事了(注意在校生不是一定都互相认识) 代码: #include<cstdio> #inclu ...
- BZOJ1433 ZJOI2009 假期的宿舍 二分图匹配
1433: [ZJOI2009]假期的宿舍 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2375 Solved: 1005[Submit][Sta ...
- 2055 [ZJOI2009]假期的宿舍
P2055 [ZJOI2009]假期的宿舍 题目描述 学校放假了 · · · · · · 有些同学回家了,而有些同学则有以前的好朋友来探访,那么住宿就是一个问题.比如 A 和 B 都是学校的学生,A ...
- bzoj1433: [ZJOI2009]假期的宿舍
1433: [ZJOI2009]假期的宿舍 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2286 Solved: 969[Submit][Stat ...
- bzoj1433:[ZJOI2009]假期的宿舍
明显的二分图最大匹配. #include<cstdio> #include<cstring> #include<cctype> #include<algori ...
- bzoj1433 [ZJOI2009]假期的宿舍(最大流)
1433: [ZJOI2009]假期的宿舍 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1717 Solved: 754[Submit][Stat ...
- BZOJ_1433_[ZJOI2009]假期的宿舍_二分图匹配
BZOJ_1433_[ZJOI2009]假期的宿舍_二分图匹配 题意: 学校放假了······有些同学回家了,而有些同学则有以前的好朋友来探访,那么住宿就是一个问题.比如A 和B都是学校的学生,A要回 ...
随机推荐
- MySQL线程池(THREAD POOL)的原理
MySQL常用(目前线上使用)的线程调度方式是one-thread-per-connection(每连接一个线程),server为每一个连接创建一个线程来服务,连接断开后,这个线程进入thread_c ...
- ARST第四周打卡
Algorithm : 做一个 leetcode 的算法题 ////////////////////////////////////////////////////////////////////// ...
- Zero Array---思维题
链接 submit B. Zero Array time limit per test 1 second memory limit per test 256 megabytes inpu ...
- PAT A1020 Tree Traversals(25)
题目描述 Suppose that all the keys in a binary tree are distinct positive integers. Given the postorder ...
- MGR复制
CentOS7 配置如下 5.7.22 Group ReplicationMySQL5.7.22安装略 在三台db服务器上面设置/etc/hosts映射,如下:192.168.1.101 mydb ...
- MYSQL---触发器简单了解
触发器 trigger 1.触发器是指事先为某张表绑定一段代码,当表中某些内容发生改变(增insert.删delete.改update)时,系统自动触发绑定的那段代码并执行.比如 一旦订单表里插入新订 ...
- c语言中gets()的详细用法
gets从标准输入设备读字符串函数.可以无限读取,不会判断上限,以回车结束读取,所以程序员应该确保buffer的空间足够大,以便在执行读操作时不发生溢出. 从stdin流中读取字符串,直至接受到换行符 ...
- C# 使用Emit实现动态AOP框架 进阶篇之异常处理
目 录 C# 使用Emit实现动态AOP框架 (一) C# 使用Emit实现动态AOP框架 (二) C# 使用Emit实现动态AOP框架 (三) C# 使用Emit实现动态AOP框架 进阶篇之异常处 ...
- 【原创】Linux基础之重定向stdout/stderr
启动进程后查看日志(stdout和stderr) 1 nohup+tail # nohup $cmd > /path/to/file 2>&1 & # tail -f /p ...
- 无障碍开发(六)之ARIA在HTML中的使用规则
ARIA使用规则一 如果你使用的元素( HTML5 )具有语义化,应该使用这些元素,而不应该重新定义一个添加ARIA的角色.状态或属性的元素. 浏览器的语义化标签已经默认隐含ARIA语义,像nav,a ...