bzoj 3503 和谐矩阵
2015-11-16 10:38
162 查看
答案有空格!答案有空格!答案有空格!重要的事情说三遍。然后就是各种打错变量名
#include<cstdio> #include<cstdlib> #include<cstring> #include<algorithm> #include<cmath> #include<bitset> #define md #define ll long long #define inf (int) 1e9 #define eps 1e-8 #define N 50 using namespace std; int lx[4]={-1,0,0,0},ly[4]={0,-1,0,1}; ll ju ; bool ans ; bitset<N> a ; int m,n; void gaosi() { for (int i=1;i<=m;i++) { int k=i; while (k<=m&&!a[k][i]) k++; if (k>m) continue; swap(a[i],a[k]); for (int j=i+1;j<=m;j++) if (a[j][i]) a[j]^=a[i]; } for (int i=m;i;i--) { if (a[i][i]==0) ans[1][i]=a[i][0]=1; else ans[1][i]=a[i][0]; for (int j=1;j<i;j++) if (a[j][i]) a[j][0]=a[i][0]^a[j][0]; } } int main() { scanf("%d%d",&n,&m); for (int i=1;i<=m;i++) ju[1][i]=(ll)1<<i; for (int i=2;i<=n+1;i++) for (int j=1;j<=m;j++) { ll now=0; for (int k=0;k<=3;k++) { int x=i-1+lx[k],y=j+ly[k]; if (x<1||y<1||x>n||y>m) continue; now^=ju[x][y]; } ju[i][j]=now; } for (int i=1;i<=m;i++) for (int j=1;j<=m;j++) a[i][j]=(ju[n+1][i]>>j)&1; gaosi(); for (int i=2;i<=n;i++) for (int j=1;j<=m;j++) { ans[i][j]=0; for (int k=0;k<=3;k++) { int x=i-1+lx[k],y=j+ly[k]; if (x<1||y<1||x>n||y>m) continue; ans[i][j]^=ans[x][y]; } } for (int i=1;i<=n;i++) { printf("%d",ans[i][1]); for (int j=2;j<=m;j++) printf(" %d",ans[i][j]); printf("\n"); } return 0; }
相关文章推荐
- bzoj 2242 计算器
- bzoj 2597 石头剪刀布
- bzoj 3532 lis
- bzoj 3130 费用流
- bzoj 1500 维修数列 bzoj 1507 editor
- bzoj 1251 序列终结者
- bzoj 4152 the camptin (dis[x][y]=min(|x.x-y.x|,|x.y-y.y|),求1,n最短路)
- bzoj 3029 守卫者的挑战
- bzoj 2118 墨墨的等式
- <android5.0>之曲线动画(Curved motion(曲线运动))
- 浅谈虚数i在电路分析中的作用
- 【数据库7】字段相关与联合结果集
- Jenkins入门系列之——02第二章 Jenkins安装与配置
- 简述类目的优缺点,如果覆盖了本类或者父类的方法 ,会出现什么问题
- [Hibernate系列—] 1. 下载与试用Hibernate(MySQL与Oracle 配置)
- Java中String转化为其他类型方法汇总
- 用R做线性回归
- 出圈问题
- Jenkins入门系列之——01第一章 Jenkins是什么?
- bzoj 4010 菜肴制作|拓扑排序|priority_queue|解题思想