我觉得这一题的样例输出一点都不和谐,大家千万别像我一样被坑了……

题目不算难,果然是进错省系列555,不过搞出 O(n*m*2m) 的还是不要挣扎的比较好

我们暴力地推出第 n 行 第 m 列中每个数是第 1 行的哪些数的 nim 和 ——O(n3)

然后再算出 b[j] = a[n][j] xor a[n-1][j] xor a[n][j+1] xor a[n][j-1]

就有了一个似是而非的一个抑或方程组,因为如果去解的话结果一定是 xi=0

怎么办呢?

既然题目说一定有解,必然存在一个 xi=1 , 我们就暴力枚举!然后尝试解方程组即可 ——O(n4)

 #include <cstdio>
#include <cstring>
const int sizeOfMatrix=; int m, n;
inline int getint();
inline void putint(bool); struct node
{
bool a[sizeOfMatrix];
inline node() {memset(a, , sizeof(a));}
inline bool & operator [] (int x) {return a[x];}
};
inline node operator ^ (node a, node b)
{
node c;
for (int i=;i<=n;i++) c[i]=a[i]^b[i];
return c;
} node a[sizeOfMatrix][sizeOfMatrix];
node f[sizeOfMatrix];
bool b[sizeOfMatrix][sizeOfMatrix];
bool x[sizeOfMatrix];
inline void swap(bool & , bool & );
inline bool solve(int);
inline bool calc(int, int); int main()
{
m=getint(), n=getint();
for (int i=;i<=n;i++) a[][i][i]=true;
for (int i=;i<=m;i++)
for (int j=;j<=n;j++)
a[i][j]=a[i-][j]^a[i-][j-]^a[i-][j+]^a[i-][j];
for (int i=;i<=n;i++)
f[i]=a[m][i]^a[m][i-]^a[m][i+]^a[m-][i]; for (int i=;i<=n;i++)
if (solve(i))
break; for (int i=;i<=m;i++)
{
for (int j=;j<=n;j++)
putint(calc(i, j));
putchar('\n');
} return ;
}
inline int getint()
{
register int num=;
register char ch;
do ch=getchar(); while (ch<'' || ch>'');
do num=num*+ch-'', ch=getchar(); while (ch>='' && ch<='');
return num;
}
inline void putint(bool num)
{
if (num) putchar('');
else putchar('');
putchar(' ');
}
inline void swap(bool & a, bool & b)
{
bool t=a; a=b; b=t;
}
inline bool solve(int k)
{
for (int i=;i<=n;i++)
{
for (int j=;j<=n;j++)
b[i][j]=f[i][j];
if (f[i][k]==true)
b[i][k]=false, b[i][n+]=true;
}
for (int i=;i<=n;i++)
{
if (!b[i][i])
{
for (int j=i+;j<=n;j++) if (b[j][i])
{
for (int k=;k<=n+;k++)
swap(b[j][k], b[i][k]);
break;
}
} if (!b[i][i]) continue; for (int j=i+;j<=n;j++) if (b[j][i])
for (int k=i;k<=n+;k++)
b[j][k]^=b[i][k];
} x[k]=true;
for (int i=n;i>=;i--)
{
if (!b[i][i]) continue;
x[i]=b[i][n+];
for (int j=n-;j>=;j--) if (b[j][i])
b[j][i]=false, b[j][n+]^=x[i];
} for (int i=;i<=n;i++)
{
bool check=false;
for (int j=;j<=n;j++) if (f[i][j])
check^=x[j];
if (check) return false;
} return true;
}
inline bool calc(int i, int j)
{
bool ans=false;
for (int k=;k<=n;k++) if (a[i][j][k])
ans^=x[k];
return ans;
}

我的心已片片飘落

[BZOJ 3503][Cqoi 2014]和谐矩阵的更多相关文章

  1. 解题:CQOI 2013 和谐矩阵

    题面 踩踩时间复杂度不正确的高斯消元 首先可以发现第一行确定后就可以确定整个矩阵,所以可以枚举第一行的所有状态然后$O(n)$递推检查是否合法 $O(n)$递推的方法是这样的:设$pre$为上一行,$ ...

  2. BZOJ 3505 CQOI 2014 数三角形 数学

    标题效果:到m*n该网络格,问:有网络格是一个三角形的顶点的数目. 思维:数学.首先计算所有三个相同的,不.然后,在上线的一个点失去了三个点是其中.需要注意的是,答案开放long long. CODE ...

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

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

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

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

  5. BZOJ 3503 [CQOI2014]和谐矩阵

    题目链接 BZOJ 3503 题解 没想到--直接用暴力的\(O((nm)^3)\)算法,居然能过?! 高斯消元解异或方程组. #include <cstdio> #include < ...

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

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

  7. 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个 ...

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

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

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

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

随机推荐

  1. iOS - Mac Apache WebDav 服务器配置

    前言 Apache 服务器: Web 服务器,可以支持各种脚本(PHP)的执行,目前世界上使用最为广泛的一种 Web 服务器 WebDav 服务器: 基于 http 协议的 "文件" ...

  2. Android Fragment是什么

    Fragment是Activity中用户界面的一个行为或者一个部分.你可以在一个单独的Activity上把多个Fragment组合成一个多区域的UI,并且可以在多个Activity中使用.你可以认为F ...

  3. Shell 语法之函数

    函数是被赋予名称的脚本代码块,可以在代码的任意位置重用.每当需要在脚本中使用这样的代码块时,只需引用该代码块被赋予的函数名称. 创建函数 格式 function name { commands } n ...

  4. iOS开发 Apple Pay

    一.什么是Apple Pay? 1. 概念 Apple Pay,简单来说, 就是一种移动支付方式.通过Touch ID/ Passcode,用户可使用存储在iPhone 6, 6p等设备上的信用卡和借 ...

  5. 运行Maven是报错:No goals have been specified for this build

    No goals have been specified for this build. You must specify a valid lifecycle phase or a goal in t ...

  6. jquery 返回上一页 ,关闭js代码

    1.关闭功能: $(“#guanbi”).live("click",function()){ window.close(); } 2.返回上一页: <a href=" ...

  7. 错误overlay id is not a dependency project原因分析

    之前按下面配置,一直会报标题中错误,有的同学说改成<overlay><id></id></overlay>就可以了,然而我这里竟然错误依旧. 奇怪的是间 ...

  8. spring-mvc.xml中的配置

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  9. linux文件复制与权限赋值

    文件file内容赋值到file2中 1. cp  file1  file2 2. cat file1 > file2 3. cat < file1 > file2 4. dd if= ...

  10. C#关于导出excel的方法

    一说到导出excel可能很多人都会觉得说直接利用npoi 导入导出excel格式的文件,那样非常方便,但是可能有些时候有的浏览器不支持,那么该怎么办呢,现在介绍一种纯C#的导出excel的方法,代码如 ...