2020icpc济南 - A
组合数学 + 高斯消元
[A-Matrix Equation_第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(济南) (nowcoder.com)](https://codeforces.com/problemset/problem/1632/D)
题意
给出两个大小为 \(n\;(1<=n<=200)\) 的矩阵 A,B (A,B个元素都是 0 或 1)。求矩阵 \(C\) 的方案数,满足 A,C的矩阵乘法 %2 == A,C 的对应位置的相乘
思路
- C 的各列是独立的,求出每一列的方案数相乘即可
- 对于 C 的某一列,分别设为 [x1, x2, x3 ... ,xn], 带入等式即可得到一个异或方程组,高斯消元求出自由元个数 cnt,这一列的方案就是 \(2^{cnt}\)
- 用 bitset 优化
#include <iostream>
#include <algorithm>
#include <cstring>
#include <vector>
#include <cmath>
#include <bitset>
using namespace std;
#define endl "\n"
typedef long long ll;
typedef pair<int, int> PII;
const int N = 210;
const int mod = 998244353;
int n;
int A[N][N], B[N][N];
bitset<N> a[N];
ll qmi(ll a, ll b)
{
ll ans = 1;
while(b)
{
if (b & 1)
ans = ans * a % mod;
b >>= 1;
a = a * a % mod;
}
return ans;
}
int guess()
{
int r, c;
for (c = 1, r = 1; c <= n; c++)
{
int t = r;
for (int i = r; i <= n; i++)
if (a[i][c] > a[t][c]) t = i;
if (a[t][c] == 0)
continue;
swap(a[r], a[t]);
for (int i = r + 1; i <= n; i++)
{
if (a[i][c] == 1)
a[i] ^= a[r];
}
r++;
}
r--;
return n - r;
}
ll solve(int p)
{
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
a[i][j] = A[i][j];
for (int i = 1; i <= n; i++)
{
int x = A[i][i] - B[i][p];
if (x < 0) x += 2;
a[i][i] = x;
}
int cnt = guess();
return qmi(2, cnt);
}
int main()
{
scanf("%d", &n);
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
scanf("%d", &A[i][j]);
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
scanf("%d", &B[i][j]);
ll ans = 1;
for (int i = 1; i <= n; i++)
ans = ans * solve(i) % mod;
printf("%lld\n", ans);
return 0;
}
2020icpc济南 - A的更多相关文章
- 济南最新公交线路一览(BRT)
济南最新公交线路一览(BRT) 济南BRT1路 高速公交线路 黄岗路东5:30-21:30 全福立交桥西5:30-21:30 票价1元,刷卡9折,月票有效 高速公交公司 去程:黄岗路东(BRT) - ...
- CCFlow最近在山东济南总部举行组团培训活动,有參加的能够报名
最近.CCFlow将会组织培训,由总设计师--周朋先生亲自授课. 行程 培训内容 第一天 ccflow的概述功能简 ...
- 济南清北学堂游记 Day 5.
十一月的第一天.算下来在济南已经呆了接近一星期了...... 还剩九天...看着洛谷的倒计时心里直发慌. 也许我不该过多纠结于高级算法,基础也是很重要的. 今天晚上就自由的敲一些板子吧.最后的九天,让 ...
- 济南清北学堂游记 Day 0.
(摄于千佛山山顶,济南城区风光) 看似稳得一比,实则慌如老狗= = 我可能是报到最早的且实力最弱的一只. 早晨六点二十被从床上拉起来,然后在火车站附近匆忙吃了点东西就坐火车去济南了. 路途不算远,大概 ...
- [新三板摘牌]国资企业济南华光光电去年终止拟IPO今年摘牌新三板
国资企业济南华光光电去年终止拟IPO今年摘牌新三板 http://blog.sina.com.cn/s/blog_e32cfa770102ycku.html http://stock.qlmoney. ...
- cogs 2752. [济南集训 2017] 数列运算
2752. [济南集训 2017] 数列运算 ★★☆ 输入文件:sequenceQBXT.in 输出文件:sequenceQBXT.out 简单对比时间限制:1 s 内存限制:512 ...
- 第二次java面试(用友山东济南分公司)
坐标:山东潍坊公共实训基地 面试单位:用友济南分公司(来了一位HR和技术经理) 本人状态:距离离校15天 宣讲: 1.女HR和男技术经理来到我们专业提前准备好的教室,先宣传海报和发传单,然后看了4个3 ...
- 2019~2020icpc亚洲区域赛徐州站H. Yuuki and a problem
2019~2020icpc亚洲区域赛徐州站H. Yuuki and a problem 题意: 给定一个长度为\(n\)的序列,有两种操作: 1:单点修改. 2:查询区间\([L,R]\)范围内所有子 ...
- 2020ICPC·小米 网络选拔赛第一场
2020ICPC·小米 网络选拔赛第一场 C-Smart Browser #include <string> #include <iostream> std::string s ...
- 清北 Noip 2016 考前刷题冲刺济南班
2016 10 29 周六 第一天 %%%,%ZHX大神 上午,60分, 下午,爆零orz 2016 10 30 周天 第二天 炒鸡倒霉的一天 %%%,%ZHX大神 据大神第一天的题最简单. 上午,和 ...
随机推荐
- 1163:阿克曼(Ackmann)函数
我的博客: https://www.cnblogs.com/haoningdeboke-2022/ 1163:阿克曼(Ackmann)函数 时间限制: 1000 ms 内存限制: 65 ...
- Fiddler自动响应
自动响应 自带了几个自动响应的规则: regex:(?inx).+.jpg$ # 以jpg结尾 这里写的是正则表达式,所以如果要拦截其他格式只需要改请求文件的后缀名即可. regex:(?inx).+ ...
- ChatGPT回答的关于maxscript + python
- 一些JVM指令
1.jps:查看本机java进程信息. 2 .jstack:打印线程的栈信息,制作线程dump文件. 3.jmap:打印内存映射,制作堆dump文件 4.jstat:性能监控工具 5.jhat:内存分 ...
- CH582m串口透传程序
目录 参考了沁恒官网22年1月更新的CH583EVT包中的UART1例程 功能:上位机通过串口1发送指令规定串口2和3的波特率,实现串口2和3之间的数据透传 担心串口3的接收中断会被串口2的发送中断打 ...
- flask-基础篇03 请求钩子与上下文
一.异常处理 1.HTTP 异常主动抛出 ①abort 方法: 抛出一个给定状态代码的 HTTPException 或者 指定响应,例如想要用一个页面未找到页面未找到异常来终止请求,你可以调用 abo ...
- linux办公
办公环境.生产环境: centos.redhat.big cloud 1.改PS1:生产主机的主机名太长了,每次显示占半行 [root@10.0.0.11 ~]$ echo $PS1 [\u@10.0 ...
- C# RSA加密解密 签名实现
class RSACryptoItem { public RSACryptoServiceProvider Provider; public List<byte> PubKeyBytes; ...
- JAVA查漏补缺 1
JAVA查漏补缺 1 目录 JAVA查漏补缺 1 基本数据类型 数组 方法参数传递机制 基本数据类型 数据类型 关键字 取值范围 内存占用(字节数) 整型 byte -128~127 1 整型 sho ...
- Micro-OA系统
Micro-OA简单描述 MicroOA是一款不需要专业的开发知识或开发经验,通过页面交互式即可实现动态搭建表单的微型办公自动化系统.在日常工作当中,我们面临着各种各样的表单,在开发系统时,若我们采用 ...