1433: [ZJOI2009]假期的宿舍

Time Limit: 10 Sec  Memory Limit: 162 MB
Submit: 2286  Solved: 969
[Submit][Status][Discuss]

Description

Input

Output

Sample Input

1
3
1 1 0
0 1 0
0 1 1
1 0 0
1 0 0

Sample Output

ˆ ˆ

HINT

对于30% 的数据满足1 ≤ n ≤ 12。
对于100% 的数据满足1 ≤ n ≤ 50,1 ≤ T ≤ 20。

分析:个人感觉很裸的二分图匹配,题目求是否存在方案,那就是问能不能把要求的人都匹配到床上去,那么利用匈牙利算法即可,如果匹配数等于人的数量,那么就可以匹配,在这里稍微讲一下匈牙利算法,如果1和2匹配,3要和2匹配,但2已经和1匹配了,这个时候让1挪位,1如果可以和4匹配,那么就完美匹配了,如果不行,那么只能匹配一个,所以匈牙利算法主要就是腾位置出来,具体看看代码理解理解吧,多组数据一定要注意初始化!!!
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm> using namespace std; const int maxn = 55; int T,a[maxn][maxn],vis[maxn],ans,bed[maxn],people[maxn],pipei[maxn],n,panduan[maxn],cnt1,cnt2; bool xiongyali(int x)
{
for (int i = 1; i <= cnt1; i++)
if (a[x][bed[i]] && !vis[bed[i]])
{
vis[bed[i]] = 1;
if (!pipei[bed[i]] || xiongyali(pipei[bed[i]]))
{
pipei[bed[i]] = x;
return true;
}
}
return false;
} int main()
{
scanf("%d", &T);
while (T--)
{
ans = 0;
memset(a, 0, sizeof(a));
memset(bed, 0, sizeof(bed));
memset(panduan, 0, sizeof(panduan));
memset(people, 0, sizeof(people));
memset(pipei, 0, sizeof(pipei));
cnt1 = cnt2 = 0;
scanf("%d", &n);
for (int i = 1; i <= n; i++)
scanf("%d", &panduan[i]);
for (int i = 1; i <= n; i++)
{
int temp;
scanf("%d", &temp);
if (panduan[i])
{
if (temp)
bed[++cnt1] = i;
else
people[++cnt2] = bed[++cnt1] = i;
}
else
people[++cnt2] = i;
}
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
scanf("%d", &a[i][j]);
for (int i = 1; i <= n; i++)
if (panduan[i])
a[i][i] = 1;
for (int i = 1; i <= cnt2; i++)
{
memset(vis, 0, sizeof(vis));
if (xiongyali(people[i]))
ans++;
}
if (cnt2 > cnt1)
ans = -1;
if (ans == cnt2)
printf("^_^\n");
else
printf("T_T\n");
} return 0;
}

bzoj1433: [ZJOI2009]假期的宿舍的更多相关文章

  1. BZOJ1433 ZJOI2009 假期的宿舍 二分图匹配

    1433: [ZJOI2009]假期的宿舍 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2375  Solved: 1005[Submit][Sta ...

  2. bzoj1433 [ZJOI2009]假期的宿舍(最大流)

    1433: [ZJOI2009]假期的宿舍 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1717  Solved: 754[Submit][Stat ...

  3. bzoj1433 [ZJOI2009]假期的宿舍 最大流

    [ZJOI2009]假期的宿舍 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3429  Solved: 1459[Submit][Status][D ...

  4. bzoj1433[ZJOI2009]假期的宿舍(匈牙利)

    1433: [ZJOI2009]假期的宿舍 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2544  Solved: 1074 [Submit][St ...

  5. bzoj1433: [ZJOI2009]假期的宿舍(最大二分图匹配)

    1433: [ZJOI2009]假期的宿舍 题目:传送门 题解: 这题有点水 跑个二分图匹配就完事了(注意在校生不是一定都互相认识) 代码: #include<cstdio> #inclu ...

  6. BZOJ1433 [ZJOI2009]假期的宿舍 二分图匹配 匈牙利算法

    原文链接http://www.cnblogs.com/zhouzhendong/p/8372785.html 题目传送门 - BZOJ1433 题解 我们理一理题目. 在校的学生,有自己的床,还可以睡 ...

  7. BZOJ1433[ZJOI2009]假期的宿舍——二分图最大匹配

    题目描述 学校放假了······有些同学回家了,而有些同学则有以前的好朋友来探访,那么住宿就是一个问题.比如A 和B都是学校的学生,A要回家,而C来看B,C与A不认识.我们假设每个人只能睡和自己直接认 ...

  8. [bzoj1433][ZJOI2009]假期的宿舍——二分图

    题目大意 传送门 题解 显然是二分图匹配. 用一些方法建图就好了. 要注意的是: 本题有多组数据!!! 初始化一定要注意!!! 代码 #include <bits/stdc++.h> us ...

  9. bzoj1433: [ZJOI2009]假期的宿舍 [二分图][二分图最大匹配]

    Description Input Output Sample Input 1 3 1 1 0 0 1 0 0 1 1 1 0 0 1 0 0 Sample Output ˆ ˆ HINT 对于30% ...

随机推荐

  1. Source insight 3572版本安装及An invalid source insight serial number was detected解决方法

    Source insight有最新版3572.3.50.0076 下载连接:http://www.sourceinsight.com/down35.html,   http://www.sourcei ...

  2. C#跟踪和调试程序-Debug类使用

    摘要: 怎样在 Visual C# .NET 中跟踪和调试?当程序运行时,您可以使用 Debug 类的方法来生成消息,以帮助您监视程序执行顺序.检测故障或提供性能度量信息.默认情况下,Debug 类产 ...

  3. 黄聪:主机宝IIS版ISAPIRewrite伪静态软件操作演示

    下载ISAPIRewrite伪静态破解文件 链接: http://pan.baidu.com/s/1dDEOLl3 密码: yx15 解压到主机宝ISAPIRewrite安装目录即可.如果提示有文件正 ...

  4. hibernate 大对象映射

    1. 在pojo类中 用Blob类和Clob public class Student { private int id; private String name; private int age; ...

  5. PLSQL_查询已执行SQL的绑定参数(案例)

    2014-12-19 Created By BaoXinjian

  6. PLSQL_性能优化系列16_Oracle Tuning Analyze优化分析

    2014-12-23 Created By BaoXinjian

  7. PLSQL_性能优化系列15_Oracle Explain Plan解析计划解读

    2014-12-19 Created By BaoXinjian

  8. 【Java】图片高质量缩放类

    package com.test; import com.sun.image.codec.jpeg.JPEGImageEncoder; import com.sun.image.codec.jpeg. ...

  9. maven打成war包之后没有class文件

    用maven打了war包之后部署到tomcat下居然无法执行,看了一下原来没有任何编译的.class文件. 查了一下,是自己手欠把source的src改成src.main.java之类的目录了,但是没 ...

  10. java普通servlet三层开发模式图