洛谷P1129 [ZJOI2007] 矩阵游戏 题解

题目链接:P1129 [ZJOI2007] 矩阵游戏

题意:给定一张有黑白棋子的正方形棋盘,问存不存在解法使得经过若干次交换行或列的操作后,左上角至右下角的对角线上所有的点放着黑色棋子

说实话第一眼看到这个题我连暴力都不知道咋打

这道题的建模挺有意思的

对于 ∀i∈Z,1≤i≤n\forall i \in \Z, 1\le i \le n∀i∈Z,1≤i≤n ,要求第 iii 行第 iii 列为黑色

不妨可以看作行结点 iii 与列结点 iii 之间有一条无向边(显然没有权重)

则交换行 u,vu,vu,v 的操作,就可以看作重命名的操作

问题就可以转化为行结点集 VaV_aVa​ 与列结点集 VbV_bVb​ 求二分图最大匹配

当最大匹配值为 nnn 时,存在解

时间复杂度 O(Qn2)O(Qn^2)O(Qn2) ,QQQ 为数据的组数

代码如下(忽略那个快读,其实没有什么大用处 qwq)

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define INF 0x3f3f3f3f3f3f3f3f
#define gc() readchar()
#define pc(a) putchar(a)
#define SIZ (int)(1e5+15)
char buf1[SIZ],*p1=buf1,*p2=buf1;
char readchar()
{if(p1==p2)p1=buf1,p2=buf1+fread(buf1,1,SIZ,stdin);return p1==p2?EOF:*p1++;
}
template<typename T>void read(T &k)
{char ch=gc();T x=0,f=1;while(!isdigit(ch)){if(ch=='-')f=-1;ch=gc();}while(isdigit(ch)){x=(x<<1)+(x<<3)+(ch^48);ch=gc();}k=x*f;
}
template<typename T>void write(T k)
{if(k<0){k=-k;pc('-');}static T stk[66];T top=0;do{stk[top++]=k%10,k/=10;}while(k);while(top){pc(stk[--top]+'0');}
}
// ---------------------------------------------------- qwq
#define N (int)(205)
int n,Q,vis[N],mch[N],d[N][N];
int dfs(int u,int now)
{if(vis[u]==now)return 0;vis[u]=now;for(int i=1; i<=n; i++)if(d[u][i]&&(!mch[i]||dfs(mch[i],now))){mch[i]=u;return 1;}return 0;
}
int hgn()
{memset(vis,0,sizeof(vis));memset(mch,0,sizeof(mch));int ans=0;for(int i=1; i<=n; i++)ans+=dfs(i,i);return ans;
}
signed main()
{read(Q);while(Q--){read(n);for(int i=1; i<=n; i++)for(int j=1; j<=n; j++)read(d[i][j]);puts((hgn()==n)?"Yes":"No");}return 0;
}

转载请说明出处

洛谷P1129 [ZJOI2007] 矩阵游戏 题解相关推荐

  1. 洛谷 P1129 [ZJOI2007]矩阵游戏 解题报告

    P1129 [ZJOI2007]矩阵游戏 题目描述 小\(Q\)是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏――矩阵游戏.矩阵游戏在一个\(N*N\)黑白方阵进行(如同国际象棋一般 ...

  2. 洛谷P1129: [ZJOI2007]矩阵游戏(二分图最大匹配)

    https://www.luogu.org/problemnew/show/P1129 题目描述 小Q是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏――矩阵游戏.矩阵游戏在一个N×N ...

  3. 洛谷:P1129 [ZJOI2007] 矩阵游戏

    题目链接:P1129 [ZJOI2007] 矩阵游戏 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 解题思路: 首先不知道最大匹配数概念的可以看看这篇博客: (5条消息) 二分图及 ...

  4. 洛谷:P1129 [ZJOI2007] 矩阵游戏(二分图最大匹配)

    洛谷:矩阵游戏 洛谷题解就挺好 目的是使得最终(1,1)(2,2)-(n,n)都有一个点 可以看作为,最终状态需要每 i 行和 i 列都存在一个匹配 建图方式:对于 i 行 j 列的1点,建一条 i ...

  5. 【bzoj3240 洛谷P1397】矩阵游戏[NOI2013](矩阵乘法+卡常)

    题目传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3240 这道题其实有普通快速幂+费马小定理的解法--然而我太弱了,一开始只想到了矩阵乘法的 ...

  6. P1129 [ZJOI2007]矩阵游戏 (匈牙利算法)

    传送门 题目描述 小 Q 是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏――矩阵游戏.矩阵游戏在一个n×n \timesn×n黑白方阵进行(如同国际象棋一般,只是颜色是随意的).每次 ...

  7. P1129 [ZJOI2007] 矩阵游戏

    文章目录 R e s u l t Result Result H y p e r l i n k Hyperlink Hyperlink D e s c r i p t i o n Descripti ...

  8. BZOJ5323 洛谷4562:[JXOI2018]游戏——题解

    https://www.luogu.org/problemnew/show/P4562 https://www.lydsy.com/JudgeOnline/problem.php?id=5323 (B ...

  9. 洛谷P7515:矩阵游戏(差分约束)

    解析 如果没有元素均要在 [0,1e6][0,1e6][0,1e6] 的条件,可以很容易的构造出一个合法解. 那么我们就要通过调整得到的解,使所有数都在合法范围内. 注意到,每次给某一行/列依次+1, ...

最新文章

  1. Android Audio代码分析25 - JNI callback
  2. php-函数小知识点
  3. iOS学习笔记(1)--认识Xcode6.1的Interface Builder和常用快捷键
  4. uclibc和glibc的差别
  5. 让Sql Server也能出现如VS一样的智能提示工具--资源更新
  6. python cookbook 笔记三
  7. 力扣——204. 计数质数
  8. 分布式共识算法 (Consensus Algorithm)
  9. 一个多文件编程里.h文件定义static变量产生的问题
  10. linux-网络安全防火墙
  11. 游戏和股票的结构有一定的类似性
  12. 四川地区办理增值电信经营许可证
  13. 网易云音乐热评的规律,44万条数据告诉你
  14. 华为手机打开信号服务器,华为手机网络信号不稳定怎么办?华为手机网络不稳定的解决方法...
  15. JZOJ 3158 【JSOI2013】丢番图
  16. gem是什么证书_珠宝鉴定:EGL证书到底是一个什么样的证书?
  17. python运势预测程序_基于Python的星座运势接口调用代码实例
  18. 外媒:阿里巴巴选择中金和瑞信牵头安排香港股份发行
  19. 解决Spring 鸡(J)四(s)屁(p)文件夹下面有(J)(S)(P)文件但访问404的问题
  20. 感受GSAT,挑战Samsung

热门文章

  1. 使用DoraCloud在Proxmox虚拟化平台搭建桌面云
  2. 汉语拼音文件搜索项目
  3. 2020北京邮电大学计算机学院复试经验分享
  4. backup archivelog all not backed up;
  5. 微信推出史上最简单「拍一拍」新功能,仅需一行代码,好友们都玩疯了!
  6. 性能测试——系统业务指标
  7. 【产品经理】大学生英语拓展
  8. latex如何设置字体并加粗_Latex设置字体大小,加粗,加下划线,变斜体_孩纸气_新浪博客...
  9. 那些年做过的动态图表-实用漂亮的Excel动态图表
  10. Seurat | 不同单细胞转录组的整合方法