洛谷传送门

BZOJ传送门

题目描述

我们称一个由000和111组成的矩阵是和谐的,当且仅当每个元素都有偶数个相邻的111。一个元素相邻的元素包括它本身,及他上下左右的444个元素(如果存在)。给定矩阵的行数和列数,请计算并输出一个和谐的矩阵。注意:所有元素为000的矩阵是不允许的。

输入输出格式

输入格式:

输入一行,包含两个空格分隔的整数mmm和nnn,分别表示矩阵的行数和列数。

输出格式:

输出包含mmm行,每行nnn个空格分隔整数(000或111),为所求矩阵。测试数据保证有解。

输入输出样例

输入样例#1:

4 4

输出样例#1:

0 1 0 0
1 1 1 0
0 0 0 1
1 1 0 1

说明

数据范围

1≤m,n≤401 \le m, n \le 401≤m,n≤40

解题分析

首先我们可以暴力高斯消元, 因为是异或方程组, 可以用bitsetbitsetbitset优化,复杂度是O((nm)332)O(\frac{(nm)^3}{32})O(32(nm)3​), 的确能过…

然而这里有一种更优雅的写法: 我们发现只要确定第一行的元素就可以确定整个表的元素, 而整个表有合法解的必要条件为第n+1n+1n+1行元素递推出来全部为000。那么我们先O(nm)O(nm)O(nm)递推出第n+1n+1n+1行元素对应的第一行的元素组成, 这样就可以列出mmm个mmm元方程, 进而解出得到第一行的元素, 最后再递推一次即可。

总复杂度O(m3)O(m^3)O(m3)。

代码如下:

#include <cstdio>
#include <cstring>
#include <cmath>
#include <cctype>
#include <algorithm>
#include <cstdlib>
#include <bitset>
#define R register
#define IN inline
#define W while
#define gc getchar()
#define MX 45
#define ll long longint n, m;
ll tran[MX][MX];
std::bitset <MX> mat[MX], ans[MX];void Gauss()
{for (R int i = 1; i <= m; ++i){for (R int j = i; j <= m; ++j)if (mat[j][i]) {std::swap(mat[j], mat[i]); break;}if (!mat[i][i]) continue;for (R int j = i + 1; j <= m; ++j) if (mat[j][i]) mat[j] ^= mat[i];}for (R int i = m; i; --i){ans[1][i] = mat[i][i] ? mat[i][m + 1] : 1;if (ans[1][i]) for (R int j = 1; j < i; ++j) if (mat[j][i]) mat[j][m + 1] = !mat[j][m + 1];}
}int main(void)
{scanf("%d%d", &n, &m);for (R int i = 1; i <= m; ++i) tran[1][i] = 1ll << i;for (R int i = 2; i <= n + 1; ++i)for (R int j = 1; j <= m; ++j)tran[i][j] = tran[i - 1][j - 1] ^ tran[i - 1][j] ^ tran[i - 1][j + 1] ^ tran[i - 2][j];for (R int i = 1; i <= m; ++i)for (R int j = 1; j <= m; ++j) mat[i][j] = (tran[n + 1][i] >> j) & 1;Gauss();for (R int i = 2; i <= n; ++i)for (R int j = 1; j <= m; ++j)ans[i][j] = ans[i - 1][j - 1] ^ ans[i - 1][j] ^ ans[i - 1][j + 1] ^ ans[i - 2][j];for (R int i = 1; i <= n; ++i){for (R int j = 1; j <= m; ++j) printf("%d ", (int)ans[i][j]);puts("");}
}

[Luogu P3164] [BZOJ 3503] [CQOI2014]和谐矩阵相关推荐

  1. bzoj 3503: [Cqoi2014]和谐矩阵(高斯消元)

    3503: [Cqoi2014]和谐矩阵 Time Limit: 10 Sec  Memory Limit: 128 MBSec  Special Judge Submit: 1101  Solved ...

  2. bzoj3503: [Cqoi2014]和谐矩阵

    高斯消元解异或方程组.学了bitset.对比如下 #include<cstdio> #include<cstring> #include<iostream> #in ...

  3. [CQOI2014]和谐矩阵

    嘟嘟嘟 遇到这种(看似)构造的题,我好像一般都做不出来-- 然而这题正解是高斯消元解异或方程组-- 首先我们容易列出式子a[i][j] ^ a[i - 1][j] ^ a[i + 1][j] ^ a[ ...

  4. bzoj3503【CQOI2014】和谐矩阵

    3503: [Cqoi2014]和谐矩阵 Time Limit: 10 Sec   Memory Limit: 128 MBSec   Special Judge Submit: 841   Solv ...

  5. Luogu P1198 BZOJ 1012 最大数 (线段树)

    Luogu P1198 BZOJ 1012 最大数 (线段树) 手动博客搬家: 本文发表于20170821 14:32:05, 原地址https://blog.csdn.net/suncongbo/a ...

  6. JZOJ 3596. 【CQOI2014】和谐矩阵

    Description 我们称一个由0和1组成的矩阵是和谐的,当且仅当每个元素都有偶数个相邻的1.一个元素相邻的元素包括它本身,及他上下左右的4个元素(如果存在). 给定矩阵的行数和列数,请计算并输出 ...

  7. 【BZOJ3503】【Cqoi2014】和谐矩阵 高斯消元,解异或方程组

    #include <stdio.h> int main() {puts("转载请注明出处");puts("地址:blog.csdn.net/vmurder/a ...

  8. BZOJ 3504: [Cqoi2014]危桥 [最大流]

    3504: [Cqoi2014]危桥 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 1407  Solved: 703 [Submit][Statu ...

  9. [BZOJ 1048] [HAOI2007] 分割矩阵 【记忆化搜索】

    题目链接:BZOJ - 1048 题目分析 感觉这种分割矩阵之类的题目很多都是这样子的. 方差中用到的平均数是可以直接算出来的,然后记忆化搜索 Solve(x, xx, y, yy, k) 表示横坐标 ...

  10. bzoj 3504: [Cqoi2014]危桥(最大流)

    3504: [Cqoi2014]危桥 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 1660  Solved: 823 [Submit][Statu ...

最新文章

  1. Python 统计列表中元素出现的次数
  2. 南昌理工学院计算机网络技术专业怎么样,南昌理工学院怎么样 重点专业是什么...
  3. java队列,ArrayBlockingQueue
  4. 【小知识点】分类机器学习中,某一标签占比太大(标签稀疏),如何学习?...
  5. Python制作代码雨
  6. webservice视频教程-基于SOA 思想下的WebService实战
  7. 金融行业,保险行业软件测试分析
  8. win7录屏_专业电脑录屏方法有哪些?分享录屏靠谱方法!
  9. 韦根协议-C编程实现
  10. UCB——上界置信算法
  11. java抢红包_Java 用Redis 实现抢红包功能
  12. 好佳居窗帘十大品牌 窗帘的发展故事
  13. 小程序使用 企业微信客户服务插件(联系我) contactPlugin
  14. [Excel]如何去除恼人的外部链接
  15. LPN管理中涉及到的LPN过多不能释放,导致在调拨环节零散LPN太多,如何解决该问题?
  16. egret新手引导反向遮罩
  17. 联想智能云:“三级火箭”战略加持下的云时代整合服务商
  18. 【通俗易懂的通信】信源的相关性和剩余度(冗余度)
  19. Vue extends拓展任意组件功能(el-select实例)-两种写法
  20. 痴狂青年孙正义竟然按50年规划行事

热门文章

  1. 如何面试大厂web前端?(沟通软技能总结)
  2. 微型计算机显示器能源效率,【Mr. Green】加州计算机显示器能源效率规定
  3. R:怎么在混合模型中分析随机效应的显著性
  4. 智邦国际ERP软件实施成功的七大步骤
  5. python模拟登陆GDUFE教学一体化平台
  6. 网站建设的流程及步骤是什么?
  7. Godaddy网站SSL证书安装
  8. (计算机组成原理)第七章输入和输出系统-第三节3:I/O方式之DMA方式
  9. 葛冬冬斯坦福专业_比较预测模型的表现冬冬与有马
  10. iOS 中常用的几个关键字的用法