话说好久没更博了。

最近学了好多知识懒的加进来了。

有幸认识一位大佬。

让我有了继续更博的兴趣。

但这是一个旧的题解。

我在某谷上早就发过的。

拿过来直接用就当回归了吧。


其实这道题有一个特别关键的思路。

拿着你要确定的魔板中列去枚举要匹配的魔板的每一列。

因为列是可以交换的。

而且还有最关键的一个点。

如果你确定了其中有一列对应了,那么你的魔板其实就已经固定了。行就不能变换了。

上边这个关键点的确不好想,但是想通了这个题也就好解决了。

然后就可以用map进行对应开始查询。

如果手里的魔板的数和要确定了一一对应了就YES了。

然后你手里的魔板和需要对应的魔板对应成功就可以输出YES了。

要记着在每次枚举的时候clear一次。

具体看下面代码。

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<cctype>
#include<map>
#define rg register
#define int long long
using namespace std;
inline int read(){
rg int s=0,f=0;
rg char ch=getchar();
while(!isdigit(ch)) f|=(ch=='-'),ch=getchar();
while(isdigit(ch)) s=(s<<1)+(s<<3)+(ch^48),ch=getchar();
return f?-s:s;
}
int n,m,k;
const int MAX=115;
int a1[MAX][MAX],a2[MAX][MAX],vis[MAX];
string S;
map<string,int>hsh;
void init(){
n=read(),m=read();
for(rg int i=1;i<=n;++i){
for(rg int j=1;j<=m;++j){
a1[i][j]=read();
}
}
for(rg int i=1;i<=n;++i){
for(rg int j=1;j<=m;++j){
a2[i][j]=read();
}
}
}
signed main(){
k=read();
++k;
while(--k){
bool flag=0;
init();//初始化。
for(rg int i=1;i<=m;++i){
hsh.clear();//每次都要清空。
for(rg int j=1;j<=n;++j){
vis[j]=(a1[j][1]==a2[j][i])?0:1;
}//枚举是否能够对应。
for(rg int j=1;j<=n;++j){
for(rg int k=1;k<=m;++k){
a1[j][k]^=vis[j];
}
}//对应就可以^1(代表翻转过了)。
for(rg int j=1;j<=m;++j){
string s=S;
for(rg int k=1;k<=n;++k){
s+=(char)(a1[k][j]+'0');
}
++hsh[s];
}//转换成字符串。
for(rg int j=1;j<=n;++j){
for(rg int k=1;k<=m;++k){
a1[j][k]^=vis[j];
}
}//还原
for(rg int j=1;j<=m;++j){
string s=S;
for(rg int k=1;k<=n;++k){
s+=(char)(a2[k][j]+'0');
}
if(!hsh[s]) break;//这里没被改过就跳过。
--hsh[s];
if(j==m) flag=1;
}
}
if(flag) printf("YES\n");
else printf("NO\n");
}
return 0;
}

完美。

【题解】魔板—洛谷P1275。的更多相关文章

  1. 【题解】【洛谷 P1967】 货车运输

    目录 洛谷 P1967 货车运输 原题 题解 思路 代码 洛谷 P1967 货车运输 原题 题面请查看洛谷 P1967 货车运输. 题解 思路 根据题面,假设我们有一个普通的图: 作图工具:Graph ...

  2. 洛谷P1275 魔板

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

  3. 洛谷 P1275 魔板

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

  4. [题解] LOJ 3300 洛谷 P6620 [省选联考 2020 A 卷] 组合数问题 数学,第二类斯特林数,下降幂

    题目 题目里要求的是: \[\sum_{k=0}^n f(k) \times X^k \times \binom nk \] 这里面出现了给定的多项式,还有组合数,这种题目的套路就是先把给定的普通多项 ...

  5. [题解] BZOJ 3456 洛谷 P4841 [集训队作业2013]城市规划 多项式,分治FFT

    题目 令\(f_i\)表示n个点的答案.考虑容斥,用所有连边方案减去有多个连通块的方案.枚举1号点所在的连通块大小: \(f_i=2^{i(i-1)/2}-\sum_{j>0}^{i-1}f_j ...

  6. BZOJ3675 & 洛谷3648 & UOJ104:[Apio2014]序列分割——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=3675 https://www.luogu.org/problemnew/show/P3648 ht ...

  7. [洛谷P2408]不同子串个数

    题目大意:给你一个字符串,求其中本质不同的字串的个数 题解:同[洛谷P4070][SDOI2016]生成魔咒,只要最后再输出就行了 卡点:无 C++ Code: #include <cstdio ...

  8. 【CJOJ1494】【洛谷2756】飞行员配对方案问题

    题面 题目背景 第二次世界大战时期.. 题目描述 英国皇家空军从沦陷国征募了大量外籍飞行员.由皇家空军派出的每一架飞机都需要配备在航行技能和语言上能互相配合的2 名飞行员,其中1 名是英国飞行员,另1 ...

  9. 洛谷2973 [USACO10HOL]赶小猪Driving Out the Piggi… 概率 高斯消元

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - 洛谷2973 题意概括 有N个城市,M条双向道路组成的地图,城市标号为1到N.“西瓜炸弹”放在1号城市,保证城 ...

随机推荐

  1. 使用python抓取数据之菜鸟爬虫1

    ''' Created on 2018-5-27 @author: yaoshuangqi ''' #本代码获取百度乐彩网站上的信息,只获取最近100期的双色球 import urllib.reque ...

  2. Docker版本与安装介绍

    Docker版本与安装介绍 Docker-CE 和 Docker-EE Centos 上安装 Docker-CE Ubuntu 上安装 Docker-CE Docker-CE和Docker-EE Do ...

  3. flutter 主题切换

    ### 主题 ``` // 1.main主文件 import 'package:flutter_smart_park/config/theme.dart' show AppTheme; Provide ...

  4. jQuery的deferred对象实战应用(附:Exchar动态多条数据展示并在topic展示详细数据)

    解决三个后台请求都成功后先比较数据再处理数据的需求 今天碰到了一个问题,我需要创建一个图表,但是需要请求三个接口才能比较出指标数据,于是就看到了deferred对象 理论的补充在这里:http://w ...

  5. DAY19、日常模块

    一.hashlib模块:加密1.基本使用:import hashlibcipher = hashlib.md5('需要加密的数据(二进制形式)'.encode('utf-8'))print(ciphe ...

  6. 1.nginx_add_after_body

    语法: add_before_body uri;默认值: —配置段: http, server, location发起一个子请求,请求给定的uri,并且将内容追加到主题响应的内容之前. 语法: add ...

  7. Linux C Socket简单实例与详细注释

    最近做的东西与socket十分紧密,所以很好奇它具体是如何实现的,以前也有了解过,但是又忘记了,于是把它记录下来,以便日后查看. 服务器端:server.c #include <sys/type ...

  8. 「Manacher算法」学习笔记

    觉得这篇文章写得特别劲,插图非常便于理解. 目的:求字符串中的最长回文子串. 算法思想 考虑维护一个数组$r[i]$代表回文半径.回文半径的定义为:对于一个以$i$为回文中心的奇数回文子串,设其为闭区 ...

  9. Wiki leaks files backup

    Wiki leaks files backup 来源  http://ftp.icm.edu.pl/packages/incoming/torrent/ Index of /packages/inco ...

  10. python学习日记(模块导入)

    什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1 使用python编写的代码(.p ...