洛谷 P1129 矩阵游戏
洛谷 P1129 矩阵游戏
题目链接
题目描述
小 Q 是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏――矩阵游戏。矩阵游戏在一个 n×n 黑白方阵进行(如同国际象棋一般,只是颜色是随意的)。每次可以对该矩阵进行两种操作:
行交换操作:选择矩阵的任意两行,交换这两行(即交换对应格子的颜色)。
列交换操作:选择矩阵的任意两列,交换这两列(即交换对应格子的颜色)。
游戏的目标,即通过若干次操作,使得方阵的主对角线(左上角到右下角的连线)上的格子均为黑色。
对于某些关卡,小 Q 百思不得其解,以致他开始怀疑这些关卡是不是根本就是无解的!于是小 Q 决定写一个程序来判断这些关卡是否有解。
输入格式
本题单测试点内有多组数据。
第一行包含一个整数 T,表示数据的组数,对于每组数据,输入格式如下:
第一行为一个整数,代表方阵的大小 n。 接下来 n 行,每行 n 个非零即一的整数,代表该方阵。其中 0 表示白色,1 表示黑色。
输出格式
对于每组数据,输出一行一个字符串,若关卡有解则输出 Yes,否则输出 No。
输入
2
2
0 0
0 1
3
0 0 1
0 1 0
1 0 0
输出
No
这题是一道典型的二分图匹配问题,我们不难发现只有每一行和每一列都恰好被匹配到时,才能符合题目条件。那么怎么建图呢?很简单,当行 iii 与列 jjj 的交点为1时可以在两者之间建一条边 g[i][j]=1g[i][j]=1g[i][j]=1,建图后套一个最大匹配模板即可,AC代码如下:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=205;int g[N][N],match[N],vis[N];
int t,n,x,y,k;int found(int x){for(int i=1;i<=n;i++){if(g[x][i] && !vis[i]){vis[i]=1;if(!match[i] || (found(match[i]))){match[i]=x;return 1;}}}return 0;
}void hungary(){int ans=0;fill(match,match+N,0);for(int i=1;i<=n;i++){fill(vis,vis+N,0);if(found(i)) ans++;}if(ans==n) puts("Yes");else puts("No");
}int main(){scanf("%d",&t);while(t--){scanf("%d",&n);fill(g[0],g[0]+N*N,0);for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){scanf("%d",&k);if(k) g[i][j]=1;}}hungary();}return 0;
}
洛谷 P1129 矩阵游戏相关推荐
- 洛谷P1129 [ZJOI2007] 矩阵游戏 题解
洛谷P1129 [ZJOI2007] 矩阵游戏 题解 题目链接:P1129 [ZJOI2007] 矩阵游戏 题意:给定一张有黑白棋子的正方形棋盘,问存不存在解法使得经过若干次交换行或列的操作后,左上角 ...
- 洛谷 P2197 nim游戏
洛谷 P2197 nim游戏 题目描述 甲,乙两个人玩Nim取石子游戏. nim游戏的规则是这样的:地上有n堆石子(每堆石子数量小于10000),每人每次可从任意一堆石子里取出任意多枚石子扔掉,可以取 ...
- 洛谷 P1558 色板游戏
传送门:洛谷 P1558 色板游戏 算法分析:观察到数据范围:\(1\leq T\leq 30\) ,考虑使用二进制来进行状态压缩 将颜色\(x\)表示为 \(1<<(x-1)\) 即 \ ...
- 洛谷 P3041 视频游戏的连击Video Game Combos(AC自动机+拓扑排序+数位DP)
洛谷 P3041 视频游戏的连击Video Game Combos 难度一般,不过这个数位DP其实应该叫做记忆化搜索 题意:玩游戏时可以通过按键组合打出combo技能:然后是已知N个combo的按键方 ...
- 洛谷P1722 矩阵Ⅱ (卡塔兰数)
洛谷P1722 矩阵Ⅱ 卡塔兰数 题面 思路 代码 题面 给定一个1*(2n)的矩阵.现让你放入一样多的红色算筹和黑色算筹,使对于所有的i(1<=i<=2n),使第1~i格中红色算筹个数大 ...
- 洛谷 P1129 [ZJOI2007]矩阵游戏 解题报告
P1129 [ZJOI2007]矩阵游戏 题目描述 小\(Q\)是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏――矩阵游戏.矩阵游戏在一个\(N*N\)黑白方阵进行(如同国际象棋一般 ...
- 洛谷P1129: [ZJOI2007]矩阵游戏(二分图最大匹配)
https://www.luogu.org/problemnew/show/P1129 题目描述 小Q是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏――矩阵游戏.矩阵游戏在一个N×N ...
- 动态规划——洛谷_P1057传球游戏
题目: 题目描述 上体育课的时候,小蛮的老师经常带着同学们一起做游戏.这次,老师带着同学们一起做传球游戏.游戏规则是这样的:n个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球, ...
- 洛谷——P1000 超级玛丽游戏
P1000 超级玛丽游戏 题目背景 本题是洛谷的试机题目,可以帮助了解洛谷的使用. 建议完成本题目后继续尝试P1001.P1008. 另外强烈推荐新用户必读贴 题目描述 超级玛丽是一个非常经典的游戏. ...
最新文章
- 金额阿拉伯数字转换为中文大写
- 这样规范写代码,同事直呼“666”
- R语言t分布函数Student t distribution(dt, pt, qt rt )实战
- ISP PIPLINE (九_2) Denoise 之 time domain denoise
- NND年年回家这么难买火车票
- 【AI不惑境】学习率和batchsize如何影响模型的性能?
- 记一个mysql分页查询优化试验
- 编程语言注释方法大全
- 正则表达式提取器_C++11新特性7 - 正则表达式
- python性能分析工具模块_Python Profilers 分析器
- Python批量导入Excel文件中的不重复数据到SQLite数据库
- 《团队软件过程(修订版)》—第1章1.5节TSPi过程
- Qt4_发送和接收UDP数据报
- iframe异步加载技术及性能转
- Raspberry Pi 3安装配置Raspbian过程
- Unity 获得时间戳
- 毕业设计-ssm-气象雷达
- 非常有用的 windows CMD 命令大全
- 2017年支付宝五福活动的python生福脚本。
- CodeProject.AI 服务器:AI 最简单的方法