https://zybuluo.com/ysner/note/1136271

题面

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

(1)任选一行,改变该行中所有灯泡的状态,即亮的变暗、暗的变亮;

(2)任选两列,交换其位置。

你的任务就是根据给定两个魔板状态,判断两个状态能否互相转化。

解析

首先一眼看出个性质:每行亮的灯泡数只可能有两种或一种。

(然而这并没有什么卵用)

正经一点,这题状态只有\(0\)、\(1\),\(bitset\)走起。

然后我由于列可任意交换,我们可以把列按字典序排序。

再枚举一下看有没有列能成为目标状态第一列即可。

在判定过程中,如果一行数字不同就翻转,到最后再排序,如果后面的列能一一对应就\(yes\),否则继续。

核心思想就是在模拟时,你只能把一行翻转一次,否则为后面翻转时会改变前面的

int k,n,m,ans;
bitset<105>a[105],b[105],c;
il bool cmp(bitset<105>x,bitset<105>y)
{
fp(i,1,n) if(x[i]^y[i]) return x[i]<y[i];
return 0;
}
int main()
{
//freopen("panel.in","r",stdin);
//freopen("panel.out","w",stdout);
k=gi();
while(k--)
{
n=gi();m=gi();ans=0;
fp(i,1,m) a[i].reset(),b[i].reset();
fp(i,1,n) fp(j,1,m) a[j][i]=gi();
fp(i,1,n) fp(j,1,m) b[j][i]=gi();
sort(a+1,a+1+m,cmp);sort(b+1,b+1+m,cmp);
fp(i,1,m)
{
c=a[i]^b[1];
fp(j,1,m) a[j]^=c;
sort(a+1,a+1+m,cmp);
re int flag=1;
fp(j,1,m) if(a[j]!=b[j]) {flag=0;break;}
if(flag) {ans=1;break;}
fp(j,1,m) a[j]^=c;
sort(a+1,a+1+m,cmp);
}
puts(ans?"YES":"NO");
}
fclose(stdin);
fclose(stdout);
return 0;
}

Luogu1275魔板的更多相关文章

  1. Sicily 1051: 魔板(BFS+排重)

    相对1150题来说,这道题的N可能超过10,所以需要进行排重,即相同状态的魔板不要重复压倒队列里,这里我用map储存操作过的状态,也可以用康托编码来储存状态,这样时间缩短为0.03秒.关于康托展开可以 ...

  2. Sicily 1150: 简单魔板(BFS)

    此题可以使用BFS进行解答,使用8位的十进制数来储存魔板的状态,用BFS进行搜索即可 #include <bits/stdc++.h> using namespace std; int o ...

  3. hdu.1430.魔板(bfs + 康托展开)

    魔板 Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submis ...

  4. HDU 1430 魔板(康托展开+BFS+预处理)

    魔板 Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submis ...

  5. [HDU 1430] 魔板

    魔板 Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submiss ...

  6. hdu1430魔板(BFS+康托展开)

    做这题先看:http://blog.csdn.net/u010372095/article/details/9904497 Problem Description 在魔方风靡全球之后不久,Rubik先 ...

  7. Sicily1151:魔板搜索及优化

    最终优化代码地址: https://github.com/laiy/Datastructure-Algorithm/blob/master/sicily/1151.c 题目如下 Constraints ...

  8. 【USACO 3.2.5】魔板

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

  9. HDU_1430——魔板,预处理,康托展开,置换,string类的+操作

    Problem Description 在魔方风靡全球之后不久,Rubik先生发明了它的简化版——魔板.魔板由8个同样大小的方块组成,每个方块颜色均不相同,可用数字1-8分别表示.任一时刻魔板的状态可 ...

随机推荐

  1. 17Web应用乱码问题

    Web应用乱码问题 Web应用乱码问题 简介 每个国家(或区域)都规定了本国家(或地区)计算机信息交换用的字符编码集,如美国的扩展ASCII码, 中国的GB2312-80,日本的JIS 等,作为该国家 ...

  2. Java垃圾回收是如何工作的?

    本教程是为了理解基本的Java垃圾回收以及它是如何工作的.这是垃圾回收教程系列的第二部分.希望你已经读过了第一部分:<Java 垃圾回收介绍>. Java 垃圾回收是一项自动化的过程,用来 ...

  3. 瑞芯微ROCK960 RK3399烧录image后扩容rootfs

    问题描述: RK3399开发板烧录官网提供的ubuntu镜像: Ubuntu 16.04 Server arm64(下载地址:https://www.96boards.org/documentatio ...

  4. mysql连接错误解决(ERROR 2049 (HY000): Connection using old (pre-4.1.1) authentication protocol ref used (client option 'secure_auth' enabled))

    当使用mysql的新版本是,连接老版本的mysql,就会有可能报: ERROR 2049 (HY000): Connection using old (pre-4.1.1) authenticatio ...

  5. eduroam WIFI on Ubuntu OS

  6. HDU 5178 pairs(双指针)

    HDU 5178 pairs(双指针) Hdu 5178 解法:因为要求的是绝对值小于等于k,因此数字的序号关系并不重要,那么排序后使用双指针即可解决这个问题. #include<queue&g ...

  7. 49. spring boot日志升级篇—理论【从零开始学Spring Boot】

    我们之前在其中的一篇文章介绍过如何在spring boot中使用日志记录SLF4J. Spring Boot在所有内部日志中使用Commons Logging,但是默认配置也提供了对常用日志的支持,如 ...

  8. hdu 3804树链剖分+离线操作

    /* 树链刨分+离线操作 题意:给你一棵树,和询问x,y 从节点x--节点1的小于等于y的最大值. 解:先建一个空树,将树的边权值从小到大排序,将询问y按从小到大排序 对于每次询问y将小于等于y的边权 ...

  9. CF578D. LCS Again

    n<=100000个字符的小写字母串,问用前m<=26个小写字母能拼出多少个和原串lcs=n-1的字符串. 首先把字符串划分成若干个连续相同的段,如aaa|bb|c|dd,然后题目即要求从 ...

  10. 【Teamviewer】Teamviewer远程访问工具使用方法

    首先电脑必须能访问外网,即使是在局域网内也无所谓. 1.这里以非自动登录.自动受控的方式为例.首先,让对方也安装一个Teamviewer,或运行一个绿色的Teamviewer,并保证网络可通.然后我们 ...