bzoj 3603
考虑转化问题:一个点相邻元素中有偶数个$1$等价于一个点与相邻元素异或和为$0$
于是直接列出异或方程组求解即可
注意由于要求不允许出现全0矩阵,因此如果有自由元直接给成$1$
贴代码:
#include <cstdio>
#include <cmath>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#include <queue>
#include <stack>
#include <bitset>
using namespace std;
bitset <1605> a[1605];
int n,m,N;
int ret[1605];
int to[5][2]={{0,0},{1,0},{0,1},{-1,0},{0,-1}};
int idx(int x,int y)
{
return (x-1)*m+y;
}
bool check(int x,int y)
{
return x>0&&x<=n&&y>0&&y<=m;
}
void Gauss()
{
for(int i=1;i<=N;i++)
{
int temp=i;
while(!a[temp][i]&&temp<=N)temp++;
if(temp==N+1)
{
for(int j=i+1;j<=N;j++)a[i][j]=0;
a[i][N+1]=1;
continue;
}
swap(a[i],a[temp]);
for(int j=i+1;j<=N;j++)if(a[j][i])a[j]^=a[i];
}
for(int i=N;i>=1;i--)
{
ret[i]=a[i][N+1];
for(int j=i+1;j<=N;j++)if(a[i][j])ret[i]^=ret[j];
}
}
int main()
{
scanf("%d%d",&n,&m),N=n*m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
for(int k=0;k<5;k++)
{
int toi=i+to[k][0],toj=j+to[k][1];
if(check(toi,toj))a[idx(i,j)][idx(toi,toj)]=1;
}
}
}
Gauss();
for(int i=1;i<=n;i++,printf("\n"))for(int j=1;j<=m;j++)printf("%d ",ret[idx(i,j)]);
return 0;
}
bzoj 3603的更多相关文章
- BZOJ 2127: happiness [最小割]
2127: happiness Time Limit: 51 Sec Memory Limit: 259 MBSubmit: 1815 Solved: 878[Submit][Status][Di ...
- BZOJ 3275: Number
3275: Number Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 874 Solved: 371[Submit][Status][Discus ...
- BZOJ 2879: [Noi2012]美食节
2879: [Noi2012]美食节 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1834 Solved: 969[Submit][Status] ...
- bzoj 4610 Ceiling Functi
bzoj 4610 Ceiling Functi Description bzoj上的描述有问题 给出\(n\)个长度为\(k\)的数列,将每个数列构成一个二叉搜索树,问有多少颗形态不同的树. Inp ...
- BZOJ 题目整理
bzoj 500题纪念 总结一发题目吧,挑几道题整理一下,(方便拖板子) 1039:每条线段与前一条线段之间的长度的比例和夹角不会因平移.旋转.放缩而改变,所以将每条轨迹改为比例和夹角的序列,复制一份 ...
- 【sdoi2013】森林 BZOJ 3123
Input 第一行包含一个正整数testcase,表示当前测试数据的测试点编号.保证1≤testcase≤20. 第二行包含三个整数N,M,T,分别表示节点数.初始边数.操作数.第三行包含N个非负整数 ...
- 【清华集训】楼房重建 BZOJ 2957
Description 小A的楼房外有一大片施工工地,工地上有N栋待建的楼房.每天,这片工地上的房子拆了又建.建了又拆.他经常无聊地看着窗外发呆,数自己能够看到多少栋房子. 为了简化问题,我们考虑这些 ...
- 【splay】文艺平衡树 BZOJ 3223
Description 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区间,例如原有序序列是5 4 3 2 1,翻转区间是[2,4]的话,结果是5 2 3 ...
- bzoj 刷水
bzoj 3856: Monster 虽然是sb题,,但是要注意h可能<=a,,,开始忘记判了WA得很开心. #include <iostream> #include <cst ...
- BZOJ 2243: [SDOI2011]染色 [树链剖分]
2243: [SDOI2011]染色 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 6651 Solved: 2432[Submit][Status ...
随机推荐
- Visual Studio 安装时,共享组件、工具和SDK的路径无法更改解决方法
Visual Studio 安装时,共享组件.工具和SDK的路径无法更改解决方法 解决方案: 找到电脑中Visual Studio 2019或其他版本的VS 的注册表,删除共享组件.工具和 SDK 的 ...
- 18.SQLite应用案例-课程表
一.程序界面 1.课程表首页 一周有7天,一天有10节课. 课程表首页的布局activity_main.xml框架设计大致如此: 最外层使用线性布局设置屏幕水平方向android:orientatio ...
- 【驱动 】frambuffer中显示屏参数的修改
1.在x210板子的kernel中,默认LCD显示屏是800*400的,修改在 kernel/arch/arm/mach-s5pv210/mach-x210.c 中 258行 #define S5PV ...
- ref(代替id)
App.vue <template> <div> <Student ref="str"/> <h3 v-text="age&qu ...
- 【git】3.3 git分支-分支管理
资料来源 (1) https://git-scm.com/book/zh/v2/Git-%E5%88%86%E6%94%AF-%E5%88%86%E6%94%AF%E7%AE%A1%E7%90%86 ...
- window操作
1.进入目录 cd ... 2. 进入D盘 D: 3.读取文件内容 type file
- window向linux传递文件
1.需要在window建一个ftp的server 2.在linux的指定目录下输入: curl ftp://192.168.98.90/libalgorithm.so -u "embftp: ...
- PyTables 教程(三) 执行撤消/重做功能,使用枚举类型,表中的嵌套结构
翻译自http://www.pytables.org/usersguide/tutorials.html 执行撤消/重做功能 PyTables 支持撤销/重做功能,此功能可让您将标记放置在层次结构操作 ...
- How to Avoid Trivial Solutions in Physics-Informed Neural Networks
未发表(2021) 本文也是关注采样点的一篇工作.主要从PINN的性能与采样点数量的关系方面入手考虑.提出了一个新的惩罚项,并对采样策略提出了一点看法. 本文的工作相对比较直观,简单,效果可能并不是很 ...
- tomcat反向代理,监控,性能优化详细步骤
第1章 tomcat简介Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache,Sun和其他一些公司及个人共同 ...