P3164 [CQOI2014]和谐矩阵


乱写能AC,暴力踩标程(雾

第一眼

诶这题能暴力枚举2333!!!

第二眼

诶这题能高斯消元!那只需要把每个位置的数给设出来就能够列方程了!然后就可以\(O(1600^3)\)跑了!

第三眼

只需要对每一行每一列有奇数还是偶数个1列方程就行了!

然而我太菜了想不到这种方法

第三眼

这个方程好像系数都是0而且结果都是1!那么消的时候只需要下面方程减上面方程就行了!而且这是个模2意义下的方程!

emmm所以不需要减只需要异或?

所以可以用bitset存系数???

然后异或一下???

就可以\(O(1600^3/32)\)辗标算?

第四眼

诶好像可以卡常!显然1的数量很小,所以可以用bitset自带的findfirst和findnext可以寻找1的位置再减。。。

然后code出来就不开O2 8ms,开O2 0ms了

// It is made by XZZ
#include<cstdio>
#include<algorithm>
#include<bitset>
#define il inline
#define rg register
#define vd void
#define sta static
typedef long long ll;
il int gi(){
rg int x=0,f=1;rg char ch=getchar();
while(ch<'0'||ch>'9')f=ch=='-'?-1:f,ch=getchar();
while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();
return x*f;
}
using namespace std;
bitset<1601>S[1601];
int p[1601];
int id[41][41];
int ans[1601];
int main(){
#ifdef xzz
freopen("3164.in","r",stdin);
freopen("3163.out","w",stdout);
#endif
int n=gi(),m=gi(),N=n*m;
for(rg int i=1;i<=n;++i)
for(rg int j=1;j<=m;++j)
id[i][j]=++id[0][0];
for(rg int i=1;i<=n;++i)
for(rg int j=1;j<=m;++j)
S[id[i][j]][id[i][j]]=1;
for(rg int i=1;i<=n;++i)
for(rg int j=1;j<m;++j)
S[id[i][j]][id[i][j+1]]=1;
for(rg int i=1;i<=n;++i)
for(rg int j=2;j<=m;++j)
S[id[i][j]][id[i][j-1]]=1;
for(rg int i=1;i<n;++i)
for(rg int j=1;j<=m;++j)
S[id[i][j]][id[i+1][j]]=1;
for(rg int i=2;i<=n;++i)
for(rg int j=1;j<=m;++j)
S[id[i][j]][id[i-1][j]]=1;
for(rg int i=1;i<=N;++i)p[i]=i;
for(rg int i=1;i<=N;++i){
for(rg int j=S[p[i]]._Find_first();j<i;j=S[p[i]]._Find_next(j))
if(S[p[j]][j])S[p[i]]^=S[p[j]];
else swap(p[i],p[j]);
}
for(rg int i=N;i;--i){
if(S[p[i]][i]==0){ans[i]=1;continue;}
for(rg int j=S[p[i]]._Find_next(i);j<=N;j=S[p[i]]._Find_next(j))
ans[i]^=ans[j];
}
for(rg int i=1;i<=n;++i){
for(rg int j=1;j<=m;++j)
printf("%d ",ans[id[i][j]]);
puts("");
}
return 0;
}

P3164 [CQOI2014]和谐矩阵的更多相关文章

  1. P3164 [CQOI2014]和谐矩阵(高斯消元 + bitset)

    题意:构造一个$n*m$矩阵 使得每个元素和上下左右的xor值=0 题解:设第一行的每个元素值为未知数 可以依次得到每一行的值 然后把最后一行由题意条件 得到$m$个方程 高斯消元解一下 bitset ...

  2. 洛谷P3164 [CQOI2014]和谐矩阵

    高斯消元,可以直接消的 #include<cstdio> #include<cstdlib> #include<algorithm> #include<cst ...

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

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

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

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

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

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

  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]和谐矩阵(高斯消元,bitset)

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

  9. Luogu3164 CQOI2014 和谐矩阵 异或高斯消元

    传送门 题意:给出$N,M$,试构造一个$N \times M$的非全$0$矩阵,其中所有格子都满足:它和它上下左右四个格子的权值之和为偶数.$N , M \leq 40$ 可以依据题目中的条件列出有 ...

随机推荐

  1. Redis学习---CentOs/RedHat下Redis的安装

    redis是C语言开发,建议在linux上运行,本教程使用Centos6.4作为安装环境.      安装redis需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gc ...

  2. Linux 系统常见命令功能大全_【all】

    Linux常见快捷键(6个) ctrl + u:剪贴光标前面 ctrl + k:剪贴光标后面 ctrl + y:粘贴 ctrl + r:查找命令 ctrl + insert:复制 shift+ ins ...

  3. 安全预警-防范新型勒索软件“BlackRouter”

    近期,出现一种新型勒索软件“BlackRouter”,开发者将其与正常软件恶意捆绑在一起,借助正常软件的下载和安装实现病毒传播,并以此躲避安全软件的查杀.目前,已知的被利用软件有AnyDesk工具(一 ...

  4. php功能模块学习笔记

    字符串处理: explode爆炸 implode聚爆explode()     把字符串打散为数组.语法:explode(separator,string,limit) 本函数返回由字符串组成的数组, ...

  5. CSS盒子模型之CSS3可伸缩框属性(Flexible Box)

    CSS盒子模型(下) 一.CSS3可伸缩框(Flexible Box) 可伸缩框属性(Flexible Box)是css3新添加的盒子模型属性,有人称之为弹性盒模型,它的出现打破了我们经常使用的浮动布 ...

  6. 洛谷 P4011 孤岛营救问题【最短路+分层图】

    题外话:昨夜脑子昏沉,今早一调试就过了...错误有:我忘记还有墙直接穿墙过...memset初始化INF用错了数...然后手残敲错一个状态一直过不了样例...要是这状态去比赛我简直完了......or ...

  7. css3动画效果小结

    css3的动画功能有以下三种: 1.transition(过度属性) 2.animation(动画属性) 3.transform(2D/3D转换属性) 下面逐一进行介绍我的理解: 1.transiti ...

  8. 【洛谷】【线段树】P3353 在你窗外闪耀的星星

    [题目描述:] /* 飞逝的的时光不会模糊我对你的记忆.难以相信从我第一次见到你以来已经过去了3年.我仍然还生动地记得,3年前,在美丽的集美中学,从我看到你微笑着走出教室,你将头向后仰,柔和的晚霞照耀 ...

  9. 【洛谷】【二分答案+贪心】P1316 丢瓶盖

    [题目描述:] 陶陶是个贪玩的孩子,他在地上丢了A个瓶盖,为了简化问题,我们可以当作这A个瓶盖丢在一条直线上,现在他想从这些瓶盖里找出B个,使得距离最近的2个距离最大,他想知道,最大可以到多少呢? [ ...

  10. ubuntu16.04中安装下载工具uget+aria2并配置chrome (stable版)

    1.安装uGut sudo apt-get install uget 2.安装aria2 sudo apt-get install arias 3.配置uGet默认下载插件为aria2 菜单栏依次打开 ...