链接:
A - Matrix Equation
题意:
给一个 A 矩阵 一个 B 矩阵(矩阵元素为 0 或 1),求有多少个 C 矩阵 满足 A X C = B . C (叉乘 和 点乘)。
思路:

  1. 赛中发现样例答案都是 2 的幂次 ,然后盲猜答案是二的幂次,队友暴力打了个表发现确实如此,然后随机造了一些样例发现答案好像是把某些 位置看成 一 块,然后就可以 把这一块全部取 0 或 1.然后慢慢的又发现 每一列可以单独考虑求有几个块 。(由于线代只实在学得菜 + 不知道高斯消元是什么 ,赛后才知道这就是所谓的自由元)。然后就开始自闭了,中间甚至连方程都推了,奈何实在是不知道高斯消元这个神奇的东西。然后就铜尾了(第 209 属实幸运)。。。
  2. 然后这题其实就是每一列单独考虑,然后列出方程组,稍微化简一下就是高斯消元求异或方程组自由元的题了

    就变成了上面的形式,就可以直接套模板了推荐一篇博客 高斯消元

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 2e2 + 7;
const int mod = 998244353;
int a[maxn][maxn];//增广矩阵
int x[maxn];//解集
int freeX[maxn];//自由变元
int n;
int A[maxn][maxn],B[maxn][maxn];
ll poww(ll a,ll b){ll ans=1;while(b > 0){if(b & 1) ans = ans * a % mod;a = a * a % mod;b >>= 1;}return ans;
}
int Gauss(int equ,int var){for(int i=0;i<=var;i++){x[i]=0;freeX[i]=0;}int col=0;//当前处理的列int num=0;//自由变元的序号int row;//当前处理的行for(row=0;row<equ&&col<var;row++,col++){//枚举当前处理的行int maxRow=row;//当前列绝对值最大的行for(int i=row+1;i<equ;i++){//寻找当前列绝对值最大的行if(abs(a[i][col])>abs(a[maxRow][col]))maxRow=i;}if(maxRow!=row){//与第row行交换for(int j=row;j<var+1;j++)swap(a[row][j],a[maxRow][j]);}if(a[row][col]==0){//col列第row行以下全是0,处理当前行的下一列freeX[num++]=col;//记录自由变元row--;continue;}for(int i=row+1;i<equ;i++){if(a[i][col]!=0){for(int j=col;j<var+1;j++){//对于下面出现该列中有1的行,需要把1消掉a[i][j]^=a[row][j];}}}}for(int i=row;i<equ;i++)if(a[i][col]!=0)return -1;int temp=var-row;//自由变元有var-row个if(row<var)//返回自由变元数return temp;return 0;
}
void init() {for(int i = 0;i < n;i++) {for(int j = 0;j < n;j++) {a[i][j] = A[i][j];}}
}
int main(){scanf("%d",&n);for(int i = 0; i < n; i ++){for(int j = 0; j < n; j ++){scanf("%d",&A[i][j]);a[i][j] = A[i][j];}}for(int i = 0; i < n; i ++){for(int j = 0; j < n; j ++){scanf("%d",&B[i][j]);}}ll ans = 1;for(int r = 0;r < n; r ++){init();for(int i = 0; i < n; i ++){a[i][i] = (A[i][i] - B[i][r] + 2) % 2;}int freeNum=Gauss(n,n);//获取自由元if(freeNum == -1) continue;ans = (ans  *  poww(2 , freeNum)) % mod;}printf ("%lld\n",ans);return 0;
}

2020 icpc济南 A - Matrix Equation (高斯消元求自由元个数)相关推荐

  1. 2020ICPC济南站 A题 Matrix Equation高斯消元求异或方程组

    2020ICPC济南站 A题 Matrix Equation高斯消元求异或方程组 题意 思路 Code() 传送门: https://ac.nowcoder.com/acm/contest/10662 ...

  2. 2020 ICPC 济南 A Matrix Equation (高斯消元)

    题目链接A-Matrix Equation 第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(济南) 题目描述 We call a matrix "01 Square" i ...

  3. 【bzoj2460】[BeiJing2011]元素 贪心+高斯消元求线性基

    题目描述 相传,在远古时期,位于西方大陆的 Magic Land 上,人们已经掌握了用魔法矿石炼制法杖的技术.那时人们就认识到,一个法杖的法力取决于使用的矿石. 一般地,矿石越多则法力越强,但物极必反 ...

  4. HDU4870_Rating_双号从零单排_高斯消元求期望

    原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4870 原题: Rating Time Limit: 10000/5000 MS (Java/Other ...

  5. 2020 ACM / ICPC 济南 A Matrix Equation (高斯消元、乘法原理)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 给你定义两种 010101 矩阵上的运算: Xi,j×Yi,j=(∑k=1NXi,kYk,j ...

  6. 【BZOJ2115】[Wc2011] Xor 高斯消元求线性基+DFS

    [BZOJ2115][Wc2011] Xor Description Input 第一行包含两个整数N和 M, 表示该无向图中点的数目与边的数目. 接下来M 行描述 M 条边,每行三个整数Si,Ti ...

  7. 洛谷 - P4783 【模板】矩阵求逆(高斯消元求逆矩阵)

    题目链接:点击查看 题目大意:给出一个 n * n 的矩阵,求出其逆矩阵,mod 为 1e9 + 7,若不存在输出 No Solution 题目分析:囤个模板,原理就是,初始时在原矩阵右侧设置一个单位 ...

  8. BZOJ:4820: [Sdoi2017]硬币游戏BZOJ:1444: [Jsoi2009]有趣的游戏(高斯消元求概率)

    1444: [Jsoi2009]有趣的游戏 4820: [Sdoi2017]硬币游戏 这两道题都是关于不断随机生成字符后求出现给定字符串的概率的问题. 第一题数据范围较小,将串建成AC自动机以后,以A ...

  9. 矩阵与高斯消元【矩阵乘法,高斯消元求线性方程组,求行列式】 全网最详,附例题与姊妹篇 一万三千字详解

    (详解)矩阵快速幂详解与常见转移矩阵的构造_秦小咩的博客-CSDN博客_矩阵快速幂转移矩阵 目录 矩阵乘法 矩阵快速幂 伪代码模板 例题一 例题2 例题三 例题四 高斯消元 整形高斯消元 浮点型高斯消 ...

最新文章

  1. 清北学堂培训2019.4.7
  2. oracle删除表中数据_Excel工作表中,删除重复数据的2种方法解读,高效且实用!...
  3. Dapr + .NET 实战(五)Actor
  4. 西工大java高级网络编程_奥鹏西工大16春《JAVA高级网络编程》平时作业
  5. android内置t卡中预制资源,[FAQ17514][Recovery]Recovery mode FAQ搜寻指南
  6. auto的作用c语言,auto指的是什么意思
  7. php qq邮箱发送邮件报错_PHP实现发送邮件(二)
  8. 提升源代码安全管控 从源头保护敏感数据
  9. Python-在线文本情感分析实验
  10. go get如何删除_Go语言HTTP请求(req库)
  11. 看雪CTF.TSRC 2018 团队赛 第十一题『伊甸园』 解题思路
  12. 电机学(2) - 变压器
  13. ISP - bayer 是什么?
  14. 马云:中国企业不缺创新缺管理思想
  15. [已解决 2020年]你的支付授权失败。请核对你的信息并重试,或尝试其他支付方式。请联系你的银行了解更多信息
  16. introduction
  17. 使用 Docker 搭建 mysql 数据库
  18. python程序设计搜题软件_智慧职教云课堂APPPython程序设计(常州工业职业技术学院)期末考试搜题公众号答案...
  19. 冷数据、温数据、热数据,难道数据也是有温度的?
  20. MIPI摄像头工程=7系列FPGA + OV5640(MIPI) + 15 分钟 + VITIS

热门文章

  1. 如何评价「仙剑奇侠传六」使用Unity 3D引擎?
  2. python画log图
  3. std::thread vs CreateThread
  4. 关于无符号整数的加法
  5. 网络安全入门:什么是防火墙,防火墙有哪些功能
  6. 如何利用批处理启动cmd并进入指定目录
  7. 高级架构师_Redis_第3章_Redis持久化
  8. AndroidStudio调用系统相册选择图片并显示、将图片保存到私有空间
  9. 个人使用MATLAB timer 心得
  10. React实现(Web端)网易云音乐项目(一),错过了真的可惜呀