当前位置: 首页 > news >正文

【bzoj1433】 ZJOI2009—假期的宿舍

http://www.lydsy.com/JudgeOnline/problem.php?id=1433 (题目链接)

题意

  一个暑假,有人去大学里面探望朋友,有些人回家了,有些人留下了,每个人都要在学校里面过夜。一个人只能睡他认识的人的床。问能否安排出方案使所有人有床睡。

Solution

  直接按照题意连边然后二分图匹配即可。

细节

  多组注意清空数组,以及自己睡自己床的情况。

代码

// bzoj1433
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<cmath>
#include<queue>
#define LL long long
#define inf 2147483640
#define Pi acos(-1.0)
#define free(a) freopen(a".in","r",stdin),freopen(a".out","w",stdout);
using namespace std;

const int maxn=1010;
int f[maxn][maxn],vis[maxn],p[maxn],a[maxn],b[maxn];
int cnt,flag,n;

void Init() {
	cnt=0;flag=1;
	memset(f,0,sizeof(f));
	memset(p,0,sizeof(p));
	memset(vis,0,sizeof(vis));
}
bool match(int x) {
	for (int i=1;i<=n;i++) if (a[i] && f[x][i] && vis[i]!=cnt) {
			vis[i]=cnt;
			if (!p[i] || match(p[i])) {p[i]=x;return 1;}
		}
	return 0;
}
int main() {
	int T;scanf("%d",&T);
	while (T--) {
		scanf("%d",&n);
		for (int i=1;i<=n;i++) scanf("%d",&a[i]);
		for (int i=1;i<=n;i++) scanf("%d",&b[i]);
		Init();
		for (int i=1;i<=n;i++)
			for (int j=1;j<=n;j++) scanf("%d",&f[i][j]);
		for (int i=1;i<=n;i++) if (a[i]) f[i][i]=1;
		for (int i=1;i<=n;i++) if ((a[i] && !b[i]) || !a[i]) {
				cnt++;
				if (!match(i)) {flag=0;break;}
			}
		if (!flag) puts("T_T");
		else puts("^_^");
	}
    return 0;
}

  

转载于:https://www.cnblogs.com/MashiroSky/p/6197379.html

相关文章:

  • 【干货分享】前端面试知识点锦集01(HTML篇)——附答案
  • Liunx面试题
  • 关于面试别问及Spring如何回答思路总结!
  • Js 根据身份证号获取年龄-性别
  • linux下正确安装jsoncpp
  • hive 复杂类型
  • SQL Case when 的使用方法
  • 设计模式--适配器模式Adapter(结构型)
  • 各种文件的mime类型
  • [游戏开发-学习笔记]菜鸟慢慢飞(三)-官方教程学习小心得
  • Object类中getClass()
  • dubbo问题求解
  • 单例模式浅析
  • Django基于Pycharm开发之二 [使用django adminSite]
  • bodyParser中间件的研究
  • @jsonView过滤属性
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • Elasticsearch 参考指南(升级前重新索引)
  • es6要点
  • HTML-表单
  • JavaScript设计模式系列一:工厂模式
  • js面向对象
  • Linux后台研发超实用命令总结
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • vue-router的history模式发布配置
  • vuex 笔记整理
  • 前端学习笔记之观察者模式
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 思否第一天
  • 微服务入门【系列视频课程】
  • 优秀架构师必须掌握的架构思维
  • 远离DoS攻击 Windows Server 2016发布DNS政策
  • 你对linux中grep命令知道多少?
  • Python 之网络式编程
  • scrapy中间件源码分析及常用中间件大全
  • 移动端高清、多屏适配方案
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • #git 撤消对文件的更改
  • (11)MSP430F5529 定时器B
  • (pojstep1.1.2)2654(直叙式模拟)
  • (办公)springboot配置aop处理请求.
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (新)网络工程师考点串讲与真题详解
  • (一)UDP基本编程步骤
  • .jks文件(JAVA KeyStore)
  • .net 4.0 A potentially dangerous Request.Form value was detected from the client 的解决方案
  • .NET 8.0 发布到 IIS
  • .net core 6 集成 elasticsearch 并 使用分词器
  • .NET Framework 服务实现监控可观测性最佳实践
  • .NET 中 GetHashCode 的哈希值有多大概率会相同(哈希碰撞)
  • .NET上SQLite的连接
  • @Autowired自动装配
  • [ Linux 长征路第二篇] 基本指令head,tail,date,cal,find,grep,zip,tar,bc,unname