3503: [Cqoi2014]和谐矩阵

Time Limit: 10 Sec  Memory Limit: 128 MBSec  Special Judge
Submit: 1101  Solved: 507
[Submit][Status][Discuss]

Description

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

Input

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

Output

输出包含m行,每行n个空格分隔整数(0或1),为所求矩阵。测试数据保证有解。

Sample Input

4 4

Sample Output

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

如果第一排确定了,那么后面所有数字都确定了

所以可以暴力枚举第一排的所有情况,然后看第m+1行是不是全是0

全是0就是一组合法解,复杂度O(nm2^n)不行

考虑建立一个方程组:

如果第1行第c个数字是1会导致第m+1行第d个数为1,那么a[d][c]=1,否则a[d][c]=0

之后对这个矩阵高斯消元求出的所有合法的解就一定是第一行合法的状态

为了避免全是0的情况,自由元全部默认为1

复杂度O(m^3)

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int a[50][50], b[50][50], c[50][50];
void Guass(int m)
{int t, k, i, j;for(i=1;i<=m;i++){t = i;while(t<=m && a[t][i]==0)t++;if(t>m)continue;for(j=1;j<=m;j++)swap(a[i][j], a[t][j]);for(j=i+1;j<=m;j++){if(a[j][i]){for(k=i;k<=m;k++)a[j][k] ^= a[i][k];}}}for(i=m;i>=1;i--){if(a[i][i])c[1][i] = a[i][m+1];elsec[1][i] = 1;for(j=1;j<=i-1;j++){if(a[j][i])a[j][m+1] ^= c[1][i];}}
}
int main(void)
{int i, j, k, n, m;scanf("%d%d", &n, &m);for(i=1;i<=m;i++){b[1][i] = 1;for(j=2;j<=n+1;j++){for(k=1;k<=m;k++)b[j][k] = b[j-1][k]^b[j-1][k-1]^b[j-2][k]^b[j-1][k+1];}for(j=1;j<=m;j++)a[j][i] = b[n+1][j];memset(b, 0, sizeof(b));}Guass(m);for(i=2;i<=n;i++){for(j=1;j<=m;j++)c[i][j] = c[i-1][j]^c[i-1][j-1]^c[i-1][j+1]^c[i-2][j];}for(i=1;i<=n;i++){for(j=1;j<=m;j++){if(j>=2)printf(" ");printf("%d", c[i][j]);}puts("");}return 0;
}

bzoj 3503: [Cqoi2014]和谐矩阵(高斯消元)相关推荐

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

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

  2. POJ 1830 开关问题 【01矩阵 高斯消元】

    任意门:http://poj.org/problem?id=1830 开关问题 Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 1 ...

  3. pku 1830 开关问题(构造矩阵+高斯消元)

    开关问题 Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 4653   Accepted: 1675 Description ...

  4. BZOJ 2707: [SDOI2012]走迷宫 [高斯消元 scc缩点]

    2707: [SDOI2012]走迷宫 题意:求s走到t期望步数,\(n \le 10^4\),保证\(|SCC| \le 100\) 求scc缩点,每个scc高斯消元,scc之间直接DP 注意每次清 ...

  5. BZOJ 3270: 博物馆 [概率DP 高斯消元]

    http://www.lydsy.com/JudgeOnline/problem.php?id=3270 题意:一张无向图,一开始两人分别在$x$和$y$,每一分钟在点$i$不走的概率为$p[i]$, ...

  6. BZOJ 2115 Wc2011 Xor DFS+高斯消元

    标题效果:鉴于无向图.右侧的每个边缘,求一个1至n路径,右上路径值XOR和最大 首先,一个XOR并能为一个路径1至n简单的路径和一些简单的XOR和环 我们开始DFS获得随机的1至n简单的路径和绘图环所 ...

  7. BZOJ 3143: [Hnoi2013]游走 高斯消元 期望

    3143: [Hnoi2013]游走 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 3463  Solved: 1535 [Submit][Stat ...

  8. BZOJ 2728 HNOI2012 与非 高斯消元

    题目大意:给定k位二进制下的n个数,求[l,r]区间内有多少个数能通过这几个数与非得到 首先观察真值表 我们有A nand A = not A 然后就有not ( A nand B ) = A and ...

  9. bzoj3503: [Cqoi2014]和谐矩阵

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

最新文章

  1. Could not download lint-gradle.jar (com.android.tools.lint:lint-gradle:26.4.
  2. 计算机知识浩瀚,计算机视觉基础
  3. XML-RPC远程方法调用
  4. python解决实际问题的过程_Python开发过程问题集锦(Continuous updating)
  5. Oracle中DUMP转储方法
  6. jvm_虚拟机参数讲解(二)
  7. 【C++ 学习笔记】 MFC CEdit
  8. mysql配置文件简易代码_MySQL配置文件my.cnf 例子最详细翻译
  9. 从Oracle到PostgreSQL:一文掌握Checkpoint重要概念
  10. 容器入门(3) - docker
  11. mybatis 注解 动态SQL
  12. github 著名php,工欲善其事必先利其器,盘点Github上那些优秀的PHP项目
  13. centos7 分辨率修改,CentOS 7 修改屏幕分辨率
  14. python tkinter frame教程_Tkinter教程之Frame 框架
  15. nvidia卸载程序失败_Adobe软件卸载与常见问题解决方案
  16. android sdk多开,[原创]Android 应用多开对抗实践
  17. Python Counter函数
  18. Linux PHP开发环境:CentOS下配置LAMP开发环境
  19. matlab shading颜色设置,关于matlab中pcolor显示图片时的shading设置问题
  20. 《2018中国直销银行白皮书》发布 银行面临“颠覆式创新”

热门文章

  1. python有趣小程序-python好玩的小程序
  2. python所有软件-如何在Python中列出所有已安装的软件包及其版本?
  3. python学习手册-Python 重点知识整理(基于Python学习手册第四版)
  4. python怎么读取csv文件-python3读取csv文件任意行列代码实例
  5. 最专注和高效的查词法?网易有道词典笔2.0评测
  6. 语音识别如何操作?这种语音转文字方法也太好用了吧,简单高效
  7. 微软不愿意提及的软肋:Win10的语音识别
  8. 东北大学oj平台python答案_东北大学大数据班R实训第三次作业
  9. python中装饰器的作用_Python中装饰器的用法
  10. 关于vue el-button 动态获取个数并附不同的颜色