题目描述

有这样一种魔板:它是一个长方形的面板,被划分成n行m列的n*m个方格。每个方格内有一个小灯泡,灯泡的状态有两种(亮或暗)。我们可以通过若干操作使魔板从一个状态改变为另一个状态。操作的方式有两种:
  (1)任选一行,改变该行中所有灯泡的状态,即亮的变暗、暗的变亮;
  (2)任选两列,交换其位置。
  当然并不是任意的两种状态都可以通过若干操作来实现互相转化的。
  你的任务就是根据给定两个魔板状态,判断两个状态能否互相转化。

输入格式

文件中包含多组数据。第一行一个整数k,表示有k组数据。
  每组数据的第一行两个整数n和m。(0<n,m≤100)
  以下的n行描述第一个魔板。每行有m个数字(0或1),中间用空格分隔。若第x行的第y个数字为0,则表示魔板的第x行y列的灯泡为“亮”;否则为“暗”。
  然后的n行描述第二个魔板。数据格式同上。
  任意两组数据间没有空行。

输出格式

共k行,依次描述每一组数据的结果。
  若两个魔板可以相互转化,则输出YES,否则输出NO。(注意:请使用大写字母)

输入输出样例

输入
  2
  3 4
  0 1 0 1
  1 0 0 1
  0 0 0 0
  0 1 0 1
  1 1 0 0
  0 0 0 0
  2 2
  0 0
  0 1
  1 1
  1 1

输出

YES

NO

分析

一直以为是个结论题没想到居然是个暴力枚举的。。。。。。

先来手玩一下就可以发现(并不,所以每行最多只有可能变换一次,不然就换回来了。

所以每一行就会有两种情况,变和不变

然后yyq暴力2^n枚举每行的变化情况加剪枝大力出奇迹过了这个题

其实除了2^n枚举之外,还有一种枚举方法

对于每一列来说,列的变换不会改变数字

先假设能成功

那么如果我们知道第1个矩阵中的某一列经过变换后成为第2个矩阵的某一列,

那我们就可以通过比较两个列哪些数字不同,推出哪些行是变换了的

所以我们直接去枚举第1个矩阵中的第一列经过变换后成为第2个矩阵的第i列

然后推出哪些行是变换了,进而n^3判断剩下的列是否可行。

如果全都不行则无解

复杂度是O(kn^4),开开O2应该可以过

我不信你100张牌能秒我???(雾

代码

#include<cstdio>
#include<cstring>
int T,n,m,rev[],vis[],nw[][],nx[][];
bool check(int x)
{
memset(vis,,sizeof vis);vis[x]=;
for(int j=;j<=m;j++)
{
int flag=;
for(int k=;k<=m;k++)if(!vis[k])
{
flag=;
for(int i=;i<=n;i++)flag&=(nw[i][j]==(rev[i]^nx[i][k]));
if(flag){vis[k]=;break;}
}
if(!flag)return ;
}
return ;
}
int main()
{
for(scanf("%d",&T);T;T--)
{
scanf("%d%d",&n,&m);int flag=;
for(int i=;i<=n;i++)for(int j=;j<=m;j++)scanf("%d",&nw[i][j]);
for(int i=;i<=n;i++)for(int j=;j<=m;j++)scanf("%d",&nx[i][j]);
for(int i=;i<=m&&!flag;i++)
{
memset(rev,,sizeof rev);
for(int j=;j<=n;j++)rev[j]=(nw[j][]!=nx[j][i]);
flag=check(i);
}
if(flag)puts("YES");else puts("NO");
}
}

【洛谷】P1275 魔板(暴力&思维)的更多相关文章

  1. 洛谷P1275 魔板

    P1275 魔板 题目描述 有这样一种魔板:它是一个长方形的面板,被划分成n行m列的n*m个方格.每个方格内有一个小灯泡,灯泡的状态有两种(亮或暗).我们可以通过若干操作使魔板从一个状态改变为另一个状 ...

  2. 洛谷 P1275 魔板

    P1275 魔板 题目描述 有这样一种魔板:它是一个长方形的面板,被划分成n行m列的n*m个方格.每个方格内有一个小灯泡,灯泡的状态有两种(亮或暗).我们可以通过若干操作使魔板从一个状态改变为另一个状 ...

  3. [洛谷P2730] 魔板 Magic Squares

    洛谷题目链接:魔板 题目背景 在成功地发明了魔方之后,鲁比克先生发明了它的二维版本,称作魔板.这是一张有8个大小相同的格子的魔板: 1 2 3 4 8 7 6 5 题目描述 我们知道魔板的每一个方格都 ...

  4. 洛谷P2730 魔板 [广搜,字符串,STL]

    题目传送门 魔板 题目背景 在成功地发明了魔方之后,鲁比克先生发明了它的二维版本,称作魔板.这是一张有8个大小相同的格子的魔板: 1 2 3 4 8 7 6 5 题目描述 我们知道魔板的每一个方格都有 ...

  5. 洛谷 P2730 魔板 Magic Squares 解题报告

    P2730 魔板 Magic Squares 题目背景 在成功地发明了魔方之后,鲁比克先生发明了它的二维版本,称作魔板.这是一张有8个大小相同的格子的魔板: 1 2 3 4 8 7 6 5 题目描述 ...

  6. 洛谷 P2730 魔板 Magic Squares

    P2730 魔板 Magic Squares 题目背景 在成功地发明了魔方之后,鲁比克先生发明了它的二维版本,称作魔板.这是一张有8个大小相同的格子的魔板: 1 2 3 4 8 7 6 5 题目描述 ...

  7. 洛谷 - P2730 - 魔板 Magic Squares - bfs

    写状态转移弄了很久,老了,不记得自己的数组是怎么标号的了. #include <bits/stdc++.h> using namespace std; #define ll long lo ...

  8. 【题解】魔板—洛谷P1275。

    话说好久没更博了. 最近学了好多知识懒的加进来了. 有幸认识一位大佬. 让我有了继续更博的兴趣. 但这是一个旧的题解. 我在某谷上早就发过的. 拿过来直接用就当回归了吧. 其实这道题有一个特别关键的思 ...

  9. P1275 魔板

    题目描述 有这样一种魔板:它是一个长方形的面板,被划分成n行m列的n*m个方格.每个方格内有一个小灯泡,灯泡的状态有两种(亮或暗).我们可以通过若干操作使魔板从一个状态改变为另一个状态.操作的方式有两 ...

随机推荐

  1. Android目前流行三方数据库ORM分析及对比

    Android 平台上的数据库框架非常多,但是有一个共同特点就是基于对象关系映射(ORM)模型的.实现的目标也都是不需要写SQL语句,通过对对象的操作保存和操作数据.要是从语法的简洁性来说都有自己的特 ...

  2. 获取项目中所有URL--获取swagger上展示的接口信息

    有时我们需要接口的一些基本信息,比如接口请求路径,接口请求方式等,我们用这些信息来做判断,或者入库. 我在开发接口权限的时候就遇到了这个问题,之前写的接口很多,现在需要将这些接口信息存到数据库中, 用 ...

  3. 阿里云ACA—— I

    ACA 阿里云大数据助理工程师 阿里云大学 大数据助理工程师课程笔记分享, 本资料仅供个人学习,不允许用作商业用途,侵权必删 == Alibaba Cloud Certification Associ ...

  4. websocket趣说_转

    websocket协议:https://tools.ietf.org/html/rfc6455 作者:Ovear链接:https://www.zhihu.com/question/20215561/a ...

  5. wget下载出现错误 403:Forbidden

    在我尝试wget下载一张图片的时候,出现了如下错误: wget "https://k4b8k3x5.ssl.hwcdn.net/content/140516/1622-saaya-irie- ...

  6. SonarQube中三种类型的代码规则

    https://www.cnblogs.com/guoguochong/p/9117829.html 1.概述SonarQube(sonar)是一个 开源 平台,用于 管理 源代码的 质量 . Son ...

  7. 51nod 2485 小b重排字符串

    小b有一个字符串S,现在她希望重排列S,使得S中相邻字符不同. 请你判断小b是否可能成功. 样例解释:将"aab"重排为"aba"即可. 收起   输入 输入一 ...

  8. P1801 黑匣子[堆]

    题目描述 Black Box是一种原始的数据库.它可以储存一个整数数组,还有一个特别的变量i.最开始的时候Black Box是空的.而i等于0.这个Black Box要处理一串命令. 命令只有两种: ...

  9. Mongodb的安装--简单快速

    由于需要在服务器安装mongodb,所以就对Mongodb的安装进行了了研究,在了解安装过程之前,先了解一下Mongodb,Mongodb是什么? 是什么? MongDB是结余关系数据库和非关系数据库 ...

  10. css 为什么给span加vertical-align: middle不起作用?

    vertical-align是什么意思?先举个例子! 这句html元素中的文本为什么不能垂直居中. <style> span{ height:60px;vertical-align: mi ...