bzoj 1433 二分图匹配
裸地匈牙利或者最大流,直接匹配就行了
需要注意的是(我就没注意细节WA了好多次。。。)
每个人和自己之间的边是0,但是应该是1
不是在校生是没有床的。。。。
/**************************************************************
Problem:
User: BLADEVIL
Language: Pascal
Result: Accepted
Time: ms
Memory: kb
****************************************************************/
//By BLADEVIL
var
t, n, m :longint;
i :longint;
size :array[..] of longint;
know :array[..,..] of longint;
flag, bed :array[..] of boolean;
link :array[..] of longint;
function find(x:longint):boolean;
var
i :longint;
begin
for i:= to n do
if know[x,i]= then
if (not flag[i]) and (bed[i]) then
begin
flag[i]:=true;
if (link[i]=) or (find(link[i])) then
begin
link[i]:=x;
exit(true);
end;
end;
exit(false);
end;
procedure main;
var
i, j :longint;
x :longint;
ans, sum :longint;
begin
read(n);
fillchar(link,sizeof(link),);
fillchar(size,sizeof(size),);
fillchar(know,sizeof(know),);
fillchar(bed,sizeof(bed),false);
for i:= to n do read(size[i]);
for i:= to n do if size[i]= then bed[i]:=true;
for i:= to n do
begin
read(x);
if (size[i]=) and (x=) then size[i]:=;
end;
for i:= to n do
for j:= to n do read(know[i,j]);
for i:= to n do know[i,i]:=;
ans:=; sum:=;
for i:= to n do if size[i]= then inc(sum);
for i:= to n do
if size[i]= then
begin
fillchar(flag,sizeof(flag),false);
if find(i) then inc(ans);
end;
if sum=ans then writeln('^_^') else writeln('T_T');
end;
begin
read(t);
for i:= to t do main;
end.
bzoj 1433 二分图匹配的更多相关文章
- [ZJOI2009]假期的宿舍 BZOJ 1433 二分图匹配
题目描述 学校放假了 · · · · · · 有些同学回家了,而有些同学则有以前的好朋友来探访,那么住宿就是一个问题.比如 A 和 B 都是学校的学生,A 要回家,而 C 来看B,C 与 A 不认识. ...
- BZOJ 1059 & 二分图匹配
题意: 判断一个黑白染色的棋盘能否通过交换行或列使对角线上都是黑色. SOL: 真是有点醉...这种问题要么很神要么很水...第一眼感觉很水但就是不造怎么做...想了10分钟怎么感觉就是判断个数够不够 ...
- BZOJ 1433 二分图上的博弈
首先对网格染色,发现是而二分图. 那么即在二分图上选一个起点走过的点无法再走,最后无路可走就输了. 如果起点必在最大匹配中,先手必赢. 如果起点不一定在最大匹配中(包括不可能在),后手必赢.网上有解释 ...
- Bzoj 1562: [NOI2009]变换序列 匈牙利算法,二分图匹配
题目: http://cojs.tk/cogs/problem/problem.php?pid=409 409. [NOI2009]变换序列 ★★☆ 输入文件:transform.in 输出文 ...
- BZOJ 1191: [HNOI2006]超级英雄Hero(二分图匹配)
云神说他二分图匹配从来都是用网络流水过去的...我要发扬他的精神.. 这道题明显是二分图匹配.网络流的话可以二分答案+最大流.虽然跑得很慢.... -------------------------- ...
- BZOJ 1854: [Scoi2010]游戏(二分图匹配/并查集)
题面: https://www.lydsy.com/JudgeOnline/problem.php?id=1854 题解: 1.二分图匹配: 首先我们发现每件装备只能在两种属性中选一种.因此,我们以每 ...
- BZOJ.3140.[HNOI2013]消毒(二分图匹配 匈牙利)
题目链接 不难想到每次一定是切一片. 如果是平面,很容易想到直接做二分图匹配.对于3维的? 可以发现min(a,b,c)的最大值只有\(\sqrt[3]{n}≈17\),我们暴力枚举这一最小值代表的是 ...
- BZOJ 4554: [Tjoi2016&Heoi2016]游戏 二分图匹配
4554: [Tjoi2016&Heoi2016]游戏 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=4554 Descripti ...
- BZOJ 1059 矩阵游戏 二分图匹配
题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1059 题目大意: 小Q是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏 ...
随机推荐
- 【Swift】日期比较函数 记录下 Comparing date in Swift
Add this code to your project and comparing dates is easier than ever 扩展NSDATE //swift 3.0.2 extensi ...
- Leetcode 679.24点游戏
24点游戏 你有 4 张写有 1 到 9 数字的牌.你需要判断是否能通过 *,/,+,-,(,) 的运算得到 24. 示例 1: 输入: [4, 1, 8, 7] 输出: True 解释: (8-4) ...
- 数据结构-排序-shell排序
shell排序 首先,希尔排序适用于待排序列关键有序. 接下来一步步图解SHELL排序 我为了方便理解内部操作.我先把代码输出整理下. #include<iostream> #includ ...
- JAVA的文件操作【转】
11.3 I/O类使用 由于在IO操作中,需要使用的数据源有很多,作为一个IO技术的初学者,从读写文件开始学习IO技术是一个比较好的选择.因为文件是一种常见的数据源,而且读写文件也是程序员进行IO编程 ...
- 并查集——poj2236(带权并查集)
题目:Wireless Network 题意:给定n台已损坏计算机的位置和计算机最远通信距离d,然后分别根据命令执行以下两种操作: "O p" (1 <= p <= N ...
- python 生成csv乱码问题解决方法
需求背景 最近为公司开发了一套邮件日报程序,邮件一般就是表格,图片,然后就是附件.附件一般都是默认写到txt文件里,但是PM希望邮件里的附件能直接用Excel这种软件打开,最开始想保存为Excel,但 ...
- android自定义View绘制圆形头像与椭圆头像
要实现这两种效果,需要自定义View,并且有两种实现方式. 第一种: public class BitmapShaders extends View { private BitmapSh ...
- 【Linux】——实用命令
[前言] Linux的命令可以分为文件存取.目录操作.进程管理.权限管理.磁盘操作等内容,大量的命令方便了用户进行更快捷更高效的工作.但有一点需要说明的是,如果不采用linux的命令,也可以完成相应的 ...
- Graphic的一些基本概念
做了张很丑陋的图,估计还不准确...先凑合看吧~
- JSP中的Cookie
如何创建Cookie 先引包: import="javax.servlet.http.Cookie" JSP是使用如下的语法格式来创建cookie的: Cookie cookie_ ...