BZOJ原题链接 洛谷原题链接 通过手算几组例子后,很容易发现,同一列的\(1\)永远在这一列,且这些\(1\)有且仅有一个能产生贡献,行同理. 所以我们可以只考虑交换列,使得每一行都能匹配一个\(1\),且每一行匹配的\(1\)没有重列的,最后交换行排序下即可达到目标. 解决这个问题就不难了,对于一个格子\((x,y)\),若为\(1\),则从它所在的行\(x\)向列\(y\)连一条边,跑一边二分图最大匹配,判断是否是完全匹配即可. #include<cstdio> #include<…
P1129 [ZJOI2007]矩阵游戏 题目描述 小\(Q\)是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏――矩阵游戏.矩阵游戏在一个\(N*N\)黑白方阵进行(如同国际象棋一般,只是颜色是随意的).每次可以对该矩阵进行两种操作: 行交换操作:选择矩阵的任意两行,交换这两行(即交换对应格子的颜色) 列交换操作:选择矩阵的任意两列,交换这两列(即交换对应格子的颜色) 游戏的目标,即通过若干次操作,使得方阵的主对角线(左上角到右下角的连线)上的格子均为黑色. 对于某些关卡,小\…
题目链接:https://www.luogu.org/problemnew/show/P1129 分析: 这道题不是很好想,但只要想的出来,代码不成问题. 思路1 举几个例子,我们发现, 对于任何数来说,同一行的永远在同一行,同一列的永远在同一列 进一步研究,发现所有行所有列要有1,且至少要有n个1两两不同行不同列 对于每个111,设坐标为(x,y)(x,y)(x,y),那么xxx行向yyy列连边 判断是否有完全匹配(都能匹配上),能匹配上就可以 思路2 这个就是比较拓展的思路了,如果你学了高等…
这竟然是一道二分图 乍一看,可能是用搜索做,但是这个数据范围,一定会T. 我们观察发现,无论怎样变换,同一行的一定在同一行,同一列的一定还在同一列.所以说,一行只能配一列.这样,我们的目标就是寻找是否存在一种变换方式,使得行数与列数一一对应,且对应数为n. 我们可以把行数和列数作为二分图的两部分,然后跑一个匈牙利 #include <iostream> #include <cstring> #include <cstdio> #include <cmath>…
题目传送门 分析:看到这题呢,首先想到的就是搜索,数据范围也不大嘛.但是仔细思考发现这题用搜索很难做,看了大佬们的题解后学到了,这一类题目要用二分图匹配来做.可以知道,如果想要的话,每一个子都可以移动到任意位置(当然会对其他子造成影响),我们还可以发现,每一行或每一列有哪些子其实绝对是固定的,只是它们之间的相对顺序会改变. 瞎扯了这么多,进入正题吧,首先如果a[i][j]是黑子,那么我们想要得到的目标当然是把它移动到a[i][i],那么他当前的位置就可以看作j,目标位置是i,那么就把j和i之间连…
题目传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3240 这道题其实有普通快速幂+费马小定理的解法……然而我太弱了,一开始只想到了矩阵乘法的方法. 首先定义两个矩阵: $ A_{1} = \begin{bmatrix} a & b \\ 0 & 1 \end{bmatrix} $ $ A_{2} = \begin{bmatrix} c & d \\ 0 & 1 \end{bmatrix} $ 于是我们就可以得到这样…
矩阵快速幂+费马小定理 矩阵也是可以跑费马小定理的,但是要注意这个: (图是盗来的QAQ) 就是说如果矩阵a[i][i]都是相等的,那么就是mod p 而不是mod p-1了 #include<cstdio>#include<cstdlib>#include<algorithm>#include<cstring>#include<vector>#include<cmath>#define MOD 1000000007#define M…
题目大意:给定一个 N*N 的矩阵,有些格子是 1,其他格子是 0.现在允许交换若干次行和若干次列,求是否可能使得矩阵的主对角线上所有的数字都是1. 题解:首先发现,交换行和交换列之间是相互独立的.主对角线上是 1 意味着每行都对应着相应的列.现在考虑 1 是行和列之间的边,若对于这张二分图存在一个完美匹配,根据交换列时与行无关,这样总可以使得主对角线全是 1. 代码如下 #include <bits/stdc++.h> using namespace std; const int maxn=…
题意 题目链接 Sol 感觉做这题只要对矩阵乘法理解的稍微一点就能做出来对于每一行构造一个矩阵A = a 1      0 b列与列之间的矩阵为B = c 1      0 d最终答案为$A^{n - 1}B A^{n - 1}B \dots $把$A^{n-1}B$看成一项进行快速幂即可 maya把数据范围看漏了1e6个0....... 好像把快速幂换成十进制快速幂就行了 /* 感觉做这题只要对矩阵乘法理解的稍微一点就能做出来 对于每一行构造一个矩阵 A = a 1 0 b 列与列之间的矩阵为…
BZOJ1059 ZJOI2007 矩阵游戏 Description 小Q是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏--矩阵游戏.矩阵游戏在一个N*N黑白方阵进行(如同国际象棋一般,只是颜色是随意的).每次可以对该矩阵进行两种操作:行交换操作:选择矩阵的任意两行,交换这两行(即交换对应格子的颜色)列交换操作:选择矩阵的任意行列,交换这两列(即交换.对应格子的颜色)游戏的目标,即通过若干次操作,使得方阵的主对角线(左上角到右下角的连线)上的格子均为黑色.对于某些关卡,小Q百思…