Description

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

Input

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

Output

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

设(x,y)为某个位置的取值(出界视为0),则有(x,y)^(x-1,y)^(x+1,y)^(x,y-1)^(x,y+1)=0

即(x^y)=(x-1,y-1)^(x,y-1)^(x+1,y-1)^(x,y-2)

由此确定矩阵第一行即确定了整个矩阵,若合法则矩阵第m+1行计算结果为全0 (不全0则第m行不合法)。

设第一行为未知数,计算出第m+1行由第一行哪些位置的值异或得到,建立异或方程组,高斯消元求解即可。

若一个元无法确定则定为1。

时间复杂度O(n2m+n3),若数据规模更大则可以考虑压位。

#include<cstdio>
int n,m;
int f[][][];
int xs[][],ys[],as[];
int main(){
scanf("%d%d",&m,&n);
for(int i=;i<=n;i++)f[][i][i]=,as[i]=;
for(int i=;i<=m+;i++){
for(int j=;j<=n;j++){
for(int k=;k<=n;k++)f[i][j][k]=f[i-][j-][k]^f[i-][j][k]^f[i-][j+][k]^f[i-][j][k];
}
}
for(int i=;i<=n;i++){
for(int j=;j<=n;j++)xs[i][j]=f[m+][i][j];
}
int w=;
for(int i=;i<=n;i++){
for(int j=w;j<=n;j++){
if(xs[j][i]){
for(int k=;k<=n;k++){int a=xs[j][k];xs[j][k]=xs[w][k];xs[w][k]=a;}
int c=ys[j];ys[j]=ys[w];ys[w]=c;
break;
}
}
if(!xs[w][i])continue;
int yv=ys[w];
for(int j=w+;j<=n;j++){
if(xs[j][i]){
ys[j]^=ys[w];
for(int k=;k<=n;k++)xs[j][k]^=xs[w][k];
}
}
w++;
}
for(int i=n;i>=;i--){
int mx=;
while(mx<=n&&!xs[i][mx])mx++;
if(mx>n)continue;
for(int j=mx+;j<=n;j++){
if(xs[i][j])xs[i][j]=,ys[i]^=as[j];
}
as[mx]=ys[i];
}
for(int i=;i<=m;i++){
for(int j=;j<=n;j++){
int v=;
for(int k=;k<=n;k++)if(as[k]&&f[i][j][k])v^=;
printf("%d ",v);
}
putchar();
}
return ;
}

bzoj3503 和谐矩阵的更多相关文章

  1. 【高斯消元】BZOJ3503 [Cqoi2014]和谐矩阵

    3503: [Cqoi2014]和谐矩阵 Time Limit: 10 Sec  Memory Limit: 128 MBSec  Special JudgeSubmit: 1197  Solved: ...

  2. bzoj千题计划105:bzoj3503: [Cqoi2014]和谐矩阵(高斯消元法解异或方程组)

    http://www.lydsy.com/JudgeOnline/problem.php?id=3503 b[i][j] 表示i对j是否有影响 高斯消元解异或方程组 bitset优化 #include ...

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

    偶数个相邻, 以n*m个点为变量, 建立异或方程组然后高斯消元... O((n*m)^3)复杂度看起来好像有点大...但是压一下位的话就是O((n*m)^3 / 64), 常数小, 实际也跑得很快. ...

  4. BZOJ_3503_[Cqoi2014]和谐矩阵_高斯消元

    BZOJ_3503_[Cqoi2014]和谐矩阵_高斯消元 题意: 我们称一个由0和1组成的矩阵是和谐的,当且仅当每个元素都有偶数个相邻的1.一个元素相邻的元素包括它本身,及他上下左右的4个元素(如果 ...

  5. 3503: [Cqoi2014]和谐矩阵

    3503: [Cqoi2014]和谐矩阵 链接 分析: 对于每个点,可以列出一个方程a[i][j]=a[i][j-1]^a[i][j+1]^a[i-1][j]^a[i+1][j],于是可以列出n*m个 ...

  6. P3164 [CQOI2014]和谐矩阵

    P3164 [CQOI2014]和谐矩阵 乱写能AC,暴力踩标程(雾 第一眼 诶这题能暴力枚举2333!!! 第二眼 诶这题能高斯消元!那只需要把每个位置的数给设出来就能够列方程了!然后就可以\(O( ...

  7. 【BZOJ】【3503】【CQOI2014】和谐矩阵

    高斯消元解Xor方程组 Orz ZYF o(︶︿︶)o 唉我的数学太烂了…… 错误思路:对每个格点进行标号,然后根据某5个异或和为0列方程组,高斯消元找自由元……(目测N^3会TLE) ZYF的正确思 ...

  8. BZOJ3503:[CQOI2014]和谐矩阵(高斯消元,bitset)

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

  9. BZOJ3503: [Cqoi2014]和谐矩阵

    题解: 如果第一行的数知道了,我们就可以推出其他行的数. 那么如何判断第一行的数的一种填法是否合法呢?很简单,我们递推出m+1行的数,当且仅当这一行都是0时满足题意. 那么,我们就有了一种想法. 直接 ...

随机推荐

  1. 前端必学库之bootstrap

    想要成为一个全栈程序员,其实有很多技术线路.很多人说有了nodejs后,只学JAVASCRIPT就可以了.其实,会NODEJS后端开发,严格来说算是高级前端.就站长个人理解,后端的主流还是4P:jsp ...

  2. Arithmometer: A Node.js implementation

    Foreword: This project is a part of pair programming task. We implement an command-line based arithm ...

  3. L1-007 念数字

    输入一个整数,输出每个数字对应的拼音.当整数为负数时,先输出fu字.十个数字对应的拼音如下: 0: ling 1: yi 2: er 3: san 4: si 5: wu 6: liu 7: qi 8 ...

  4. 玩转X-CTR100 l STM32F4 l 基础例程printf、LED、蜂鸣器、拨码开关、位带操作

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器基础板载资源 ...

  5. Final阶段第1周/共1周 Scrum立会报告+燃尽图 04

    作业要求[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2483] 版本控制:https://git.coding.net/liuyy08 ...

  6. grafana dashboard的导入导出

    grafana的官方提供了很多社区或者官方设置的漂亮的dashboard,地址如下: 点击打开链接 导入图表大大节省了我们配置监控的时间,非常方便. 以linux host overview为例,首先 ...

  7. 浏览器兼容性工具 Spoon Browser Sandbox

    1.Spoon Browser Sandbox 勺浏览器沙箱 主流浏览器多(IE.Chrome.FireFox.Safari.Opera),浏览器又有很多版本:保证网页在主流浏览器中很好的显示,不可能 ...

  8. 玩转TypeScript(5)--环境声明

    环境声明为TypeScript引入了一个作用域,但是对于产生的javaScript程序不会有任何影响.程序员可以使用环境声明来告之TypeScript,一些其他的组将将提供变量的声明.比如,默认情况下 ...

  9. [LeetCode&Python] Problem 496. Next Greater Element I

    You are given two arrays (without duplicates) nums1 and nums2 where nums1’s elements are subset of n ...

  10. Springboot整合pagehelper分页

    一.在pom中添加依赖 <dependency> <groupId>com.github.pagehelper</groupId> <artifactId&g ...