高斯消元,可以直接消的

 #include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cstring>
#define MAXN 45*45
#define For(i,x,y) for(register int i=x;i<=y;i++)
using namespace std;
int X,Y;
int a[MAXN][MAXN];
int c(int x,int y){return (x-)*Y+y;}
int d[]={,-,,,};
void init(){
scanf("%d%d",&X,&Y);
int x,y;
For(i,,X){
For(j,,Y){
a[c(i,j)][c(i,j)]=;
For(k,,){
x=i+d[k],y=j+d[k+];
if(<=x&&x<=X&&<=y&&y<=Y){
a[c(i,j)][c(x,y)]=;
}
}
a[c(i,j)][c(X,Y)+]=;
}
}
}
int ans[][];
void guass(int m,int n){
int line=;
For(k,,m){
int i=line;
while(i<=m&&!a[i][k])i++;
if(i>m){
for(i=;i<line;i++){
if(a[i][k])a[i][n]^=,a[i][k]=;
}
continue;
}
if(i!=line)swap(a[i],a[line]);
for(i=;i<=m;i++){
if(i==line)continue;
if(a[i][k]){
For(j,k,n){
a[i][j]^=a[line][j];
}
}
}
line++;
}
line=;
For(i,,X){
For(j,,Y){
if(a[line][c(i,j)]){
ans[i][j]=a[line][n];
line++;
}
else{
ans[i][j]=;
}
}
}
}
void solve(){
guass(c(X,Y),c(X,Y)+);
For(i,,X){
For(j,,Y-){
printf("%d ",ans[i][j]);
}
printf("%d\n",ans[i][Y]);
}
}
int main()
{
// freopen("data.in","r",stdin);
init();
solve();
return ;
}

注意到第一行会决定第二行,第二行会决定第三行,然后处理最后一行,让它符合即可,这样方程数目少了一个平方

 #include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cstring>
#define MAXN 45
#define For(i,x,y) for(register int i=x;i<=y;i++)
#define ll long long
using namespace std;
int X,Y;
ll t[MAXN][MAXN];
int a[MAXN<<][MAXN];
int ans[MAXN][MAXN];
void guass(int n,int m){
int line=;
For(k,,n){
int i=line;
while(i<=n&&!a[i][k])i++;
if(i>n){
for(i=line-;i>=;i--){
if(a[i][k])a[i][m]^=,a[i][k]=;
}
continue;
}
if(i!=line)swap(a[i],a[line]);
for(i=;i<=n;i++){
if(i==line)continue;
if(a[i][k]){
For(j,k,m){
a[i][j]^=a[line][j];
}
}
}
line++;
}
line=;
For(k,,n){
if(a[line][k]){
ans[][k]=a[line][m];
line++;
}
else{
ans[][k]=;
}
}
}
void init(){
scanf("%d%d",&X,&Y);
For(i,,Y)t[][i]=(1LL<<(i-));
For(i,,X+){
For(j,,Y){
t[i][j]=t[i-][j-]^t[i-][j]^t[i-][j+]^t[i-][j];
}
}
ll p;int k;
For(j,,Y){
for(p=t[X+][j],k=;p;p>>=,k++){
if(p&){
a[j][k]=;
}
}
}
}
void solve(){
guass(Y,Y+);
// for(int i=1;i<=Y;i++){
// for(int j=1;j<=Y+1;j++){
// printf("%d ",a[i][j]);
// }
// printf("\n");
// }
For(i,,X){
For(j,,Y){
ans[i][j]=ans[i-][j-]^ans[i-][j]^ans[i-][j+]^ans[i-][j];
}
}
For(i,,X){
For(j,,Y-){
printf("%d ",ans[i][j]);
}
printf("%d\n",ans[i][Y]);
}
}
int main()
{
// freopen("data.in","r",stdin);
init();
solve();
return ;
}

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

  1. P3164 [CQOI2014]和谐矩阵

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

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

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

  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. [洛谷P1527] [国家集训队]矩阵乘法

    洛谷题目链接:[国家集训队]矩阵乘法 题目背景 原 <补丁VS错误>请前往P2761 题目描述 给你一个N*N的矩阵,不用算矩阵乘法,但是每次询问一个子矩形的第K小数. 输入输出格式 输入 ...

  9. 【题解】洛谷P3166 [CQOI2014] 数三角形(组合+枚举)

    洛谷P3166:https://www.luogu.org/problemnew/show/P3166 思路 用组合数求出所有的3个点组合(包含不合法的) 把横竖的3个点共线的去掉 把斜的3个点共线的 ...

随机推荐

  1. alpha-咸鱼冲刺day2-紫仪

    总汇链接 一,合照 emmmmm.自然是没有的. 二,项目燃尽图 三,项目进展 今天并没有什么进展,弄了好久好像也只研究出怎么把JS的功能块插入进去.html的信息提交这些还不知道要怎么弄. 四,问题 ...

  2. Git使用方法2.0

    ## Git来源: 最早开始是由Ruby程序员们发起的.Ruby是日本的家伙搞出来的,日本有个代码托管网站叫heroku,当时用这个的人比较多,现在这个网站还能打开,网址是www.heroku.com ...

  3. 转git取消commit

     如果不小心commit了一个不需要commit的文件,可以对其进行撤销. 先使用git log 查看 commit日志 commit 422bc088a7d6c5429f1d0760d008d8 ...

  4. 使用genstring和NSLocalizedString实现App文本的本地化

    OS提供了简便的方法来实现本地化,其中用的最多的就是NSLocalizedString. 首先查看下NSLocalizedString是什么: #define NSLocalizedString(ke ...

  5. NetFPGA Demo ——reference_router_nf1_cml

    NetFPGA Demo --reference_router_nf1_cml 前言 本博文主要介绍了reference_router_nf1_cml该demo的一路运行,以及一路上艰难跑通遇到的坑. ...

  6. bzoj千题计划243:bzoj2325: [ZJOI2011]道馆之战

    http://www.lydsy.com/JudgeOnline/problem.php?id=2325 设线段树节点区间为[l,r] 每个节点维护sum[0/1][0/1]  从l的A/B区域到r的 ...

  7. vue中一个dom元素可以绑定多个事件?

    其实这个问题有多个解决方法的  这里提出两点 第一种 第二种 现在dom上绑定一个 然后在你的methods中直接调用 如果要传参数  这时候千万别忘记 原创 如需转载注明出处 谢谢

  8. Oracle 使用pl/sql将表中的数据读出到文件中

    (1)在服务器上创建文件路径及文件 [oracle@redhat errormsg]$ touch test01.txt (2)在数据库中创建路径及授权 (3)创建存储过程 CREATE OR REP ...

  9. 回收 PV - 每天5分钟玩转 Docker 容器技术(152)

    当 PV 不再需要时,可通过删除 PVC 回收. 当 PVC mypvc1 被删除后,我们发现 Kubernetes 启动了一个新 Pod recycler-for-mypv1,这个 Pod 的作用就 ...

  10. centos6.5中rpm包安装mysql5.7(初始化出错如何解决)

    下载rpm包见:http://www.cnblogs.com/grey-wolf/p/7472680.html 1.rz上传到服务器,解压缩 rz [root@mini2 upload]# -.el6 ...