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大神 据大神第一天的题最简单. 上午,和 ...
随机推荐
- VUE学习-列表渲染
列表渲染 v-for <!-- v-for="(v,k,i) in arr/obj" --> <ul id="app"> <li ...
- 已拦截跨源请求:同源策略禁止读取位于 http://192.168.2.104:8080/sockjs-node/info?t=1615356410656 的远程资源。(原因:CORS 请求未能成功)
本人用的是火狐浏览器 是由于版本过低导致的被拦截,更新火狐为最新版本即可
- 你到底懂不懂JavaScript?来做做这12道面试题试试!
携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第 21 天,点击查看活动详情 JavaScript 是每一个前端开发者都应该掌握的基础技术,但是很多时候,你可能并不完全懂 Jav ...
- @Target:注解的作用目标
@Target:注解的作用目标 @Target(ElementType.TYPE)--接口.类.枚举.注解 @Target(ElementType.FIELD)--字段.枚举的常量 @Target(E ...
- SAR成像(四):多普勒频移的计算
雷达系统中,雷达与目标间的相互运动会使回波信号产生频移,称为多普勒效应,对应的频移称为多普勒频率. 假设雷达发射信号为单频连续波, f ( t ) = c o s ( 2 π f 0 t + ϕ ) ...
- 关于MounRiver编译器配置的若干问题
目录 一.在工程中单独设置预编译宏 二.将变量存放到指定RAM地址 三.串口打印浮点数 四.添加64位数据处理 五.使用math数学库 六.关闭仿真时自动清dataflash功能 七.配置printf ...
- [Err] [Dtf] 1044 - Access denied for user 'root'@'localhost' to database 'information_schema'
在从Oracle向mysql数据库传输数据时,报出来这个错误,原因是因为没有打开mysql数据库,在navicat里打开mysql,并选中要传输的数据库 再重复传输一下即可
- Win10删除此电脑默认的7个文件夹
删除方法 用记事本拷贝以下内容,改文件后缀为reg,然后点击执行. Windows Registry Editor Version 5.00 ;如需还原去除上语句前减号即可 ;取消我的电脑" ...
- CoreText学习笔记
CoreText是Apple系统的文字渲染引擎. 我们先看一个字符的字形图,了解一下一个字形包含的部分: 它的坐标系为窗口的左下角为视图的原点(跟Mac系统一样的坐标系),而iOS系统的坐标系为窗口的 ...
- SwiftUI笔记
@Published 标记对象定义的属性变更可以被监听,当对应字段变化时会触发对象 objectWillChange 通知,订阅了该属性的View也会收到值改变的通知 /// A type that ...