[bzoj]1059矩阵游戏<二分图匹配*匈牙利算法>
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1059
初见此题,我觉得这是水题,我认为只要每一行和每一列至少存在一个黑格就可以出现对角线,但是在一位名叫*ZJ的AK大佬用一张图点醒我后,我幡然醒悟

就是这张图,因为这图的每一列和每一行都至少含一个黑格,但是这张图无论怎么样操作都得不到对角线,然后在这位大佬的进一步提醒下,我尝试了二分图匹配算法
能够分析此图,我将黑格坐标的x,y连边,可以得到这张图

从二分图匹配角度看,无论如何它都无法成为一个完美匹配,而要使最后出现对角线,必须要出现完美匹配,及每一个点都要匹配成功(这是一个结论,画几个图即可推出)
我们来举一个成功例子

右图是黑格位置,左图是二分图匹配的连边情况,我们可以看出,这个二分图匹配能够成为一个完美匹配,也可以从图上分享知道这张图可以通过一次列的交换操作完成对角线
这就是此题的思路,完美匹配就简单的用匈牙利算法就行
然后还是让我们看看代码
#include<cstdio>
#include<cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<queue>
#define maxn 205
using namespace std; struct edge{
int u,v,w,nxt;
}e[maxn*maxn]; int n,m,t,head[maxn],vis[maxn],att[maxn],ans; int k=;
void adde(int u,int v){
e[k].u=u;
e[k].v=v;
e[k].nxt=head[u];
head[u]=k++;
} int can(int x)
{
for(int i=head[x];i;i=e[i].nxt)
{
int v=e[i].v;
if(vis[v]==)
{
vis[v]=;
if(att[v]==||can(att[v]))
{
att[v]=x;
return ;
}
} }
return ;
} int main()
{
scanf("%d",&t);
while(t--)
{
ans=;k=;
memset(att,,sizeof(att));
memset(head,,sizeof(head));
scanf("%d",&n);
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
{
int a;
scanf("%d",&a);
if(a==){
adde(i,j);//黑格坐标i,j连边
}
}
for(int i=;i<=n;i++)
{
memset(vis,,sizeof(vis));
if(can(i))ans++;
}
if(ans==n){
printf("Yes\n");
}else{
printf("No\n");
} }
}
[bzoj]1059矩阵游戏<二分图匹配*匈牙利算法>的更多相关文章
- BZOJ1059 [ZJOI2007]矩阵游戏 二分图匹配 匈牙利算法
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1059 题意概括 有一个n*n(n<=200)的01矩阵,问你是否可以通过交换整行和整列使得左 ...
- BZOJ 1059 矩阵游戏 二分图匹配
题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1059 题目大意: 小Q是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏 ...
- BZOJ [ZJOI2007]矩阵游戏(二分图匹配)
1059: [ZJOI2007]矩阵游戏 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 6390 Solved: 3133[Submit][Stat ...
- HDU 5943 Kingdom of Obsession 【二分图匹配 匈牙利算法】 (2016年中国大学生程序设计竞赛(杭州))
Kingdom of Obsession Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Oth ...
- USACO 4.2 The Perfect Stall(二分图匹配匈牙利算法)
The Perfect StallHal Burch Farmer John completed his new barn just last week, complete with all the ...
- 1059: [ZJOI2007]矩阵游戏 二分图匹配
https://www.lydsy.com/JudgeOnline/problem.php?id=1059 裸的二分图匹配,行列匹配即可 /****************************** ...
- HDU - 2819 Swap (二分图匹配-匈牙利算法)
题意:一个N*N的01矩阵,行与行.列与列之间可以互换.要求变换出一个对角线元素全为1的矩阵,给出互换的行号或列号. 分析:首先一个矩阵若能构成对角线元素全为1,那么矩阵的秩为N,秩小于N的情况无解. ...
- 矩阵游戏|ZJOI2007|BZOJ1059|codevs1433|luoguP1129|二分图匹配|匈牙利算法|Elena
1059: [ZJOI2007]矩阵游戏 Time Limit: 10 Sec Memory Limit: 162 MB Description 小Q是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩 ...
- bzoj 1059: [ZJOI2007]矩阵游戏 二分图匹配
1059: [ZJOI2007]矩阵游戏 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1891 Solved: 919[Submit][Statu ...
随机推荐
- 7-2 jmu-python-九九乘法表(矩形) (10 分)
本题目要求输出如下图所示的九九乘法表 注:乘积要求做格式控制,占4个位置的宽度 输入样例: 无 输出样例: 1*1=1 1*2=2 1*3=3 1*4=4 1*5=5 1*6=6 1*7=7 1*8= ...
- Everything-快速找到你的文件,电脑前的你值得拥有
如果你也是一位电脑使用者,那么你可以考虑下载这个"Everything". Everything是一款非常非常强大的软件.相信不少电脑用户,特别是Windows用户,都尝试使用过W ...
- JavaScript的函数(一)
,1,在javascript中,函数即对象.函数里面的参数可以是个函数,例如: data.sort(function(a,b){return a-b;}) 函数的返回值,return语句导致函数停止执 ...
- h5 移动端适配方案思考
基础概念 CSS像素(CSS pixels) 这个是浏览器使用的抽象单位,用来精确度量网页上的内容.平时经常写的width:100px;height:100px;都是与设备无关的. 设备独立像素(de ...
- JVM系列八(虚拟机性能监控命令).
jps JVM Process Status Tool,显示指定系统内所有的 HotSpot 虚拟机进程.显示信息包括虚拟机执行主类名称以及这些进程的本地虚拟机唯一ID(Local Virtual M ...
- JAVAEE学习day05学习,数组
容器及元素的概念 容器:是将多个数据存储到一起 元素:每个数据称为该容器的元素 数组的概念 数组:数组是长度固定,存储数据的容器,保证多个数据的类型要一致 数组定义格式及其描述 动态定义: 数据类型 ...
- Microsoft Visual Studio 修改语言包
需求内容: 更改 Microsoft Visual Studio 界面的语言包(将中文改为英文) 解决方案: https://docs.microsoft.com/zh-cn/visualstudio ...
- js 模拟鼠标绘制方块
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- python_字符串&列表&元组&字典之间转换学习
#!/usr/bin/env/python #-*-coding:utf-8-*- #Author:LingChongShi #查看源码Ctrl+左键 #数据类型之间的转换 Str='www.baid ...
- 曹工说Spring Boot源码(23)-- ASM又立功了,Spring原来是这么递归获取注解的元注解的
写在前面的话 相关背景及资源: 曹工说Spring Boot源码(1)-- Bean Definition到底是什么,附spring思维导图分享 曹工说Spring Boot源码(2)-- Bean ...