【题解】魔板—洛谷P1275。
话说好久没更博了。
最近学了好多知识懒的加进来了。
有幸认识一位大佬。
让我有了继续更博的兴趣。
但这是一个旧的题解。
我在某谷上早就发过的。
拿过来直接用就当回归了吧。
其实这道题有一个特别关键的思路。
拿着你要确定的魔板中列去枚举要匹配的魔板的每一列。
因为列是可以交换的。
而且还有最关键的一个点。
如果你确定了其中有一列对应了,那么你的魔板其实就已经固定了。行就不能变换了。
上边这个关键点的确不好想,但是想通了这个题也就好解决了。
然后就可以用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。的更多相关文章
- 【题解】【洛谷 P1967】 货车运输
目录 洛谷 P1967 货车运输 原题 题解 思路 代码 洛谷 P1967 货车运输 原题 题面请查看洛谷 P1967 货车运输. 题解 思路 根据题面,假设我们有一个普通的图: 作图工具:Graph ...
- 洛谷P1275 魔板
P1275 魔板 题目描述 有这样一种魔板:它是一个长方形的面板,被划分成n行m列的n*m个方格.每个方格内有一个小灯泡,灯泡的状态有两种(亮或暗).我们可以通过若干操作使魔板从一个状态改变为另一个状 ...
- 洛谷 P1275 魔板
P1275 魔板 题目描述 有这样一种魔板:它是一个长方形的面板,被划分成n行m列的n*m个方格.每个方格内有一个小灯泡,灯泡的状态有两种(亮或暗).我们可以通过若干操作使魔板从一个状态改变为另一个状 ...
- [题解] LOJ 3300 洛谷 P6620 [省选联考 2020 A 卷] 组合数问题 数学,第二类斯特林数,下降幂
题目 题目里要求的是: \[\sum_{k=0}^n f(k) \times X^k \times \binom nk \] 这里面出现了给定的多项式,还有组合数,这种题目的套路就是先把给定的普通多项 ...
- [题解] BZOJ 3456 洛谷 P4841 [集训队作业2013]城市规划 多项式,分治FFT
题目 令\(f_i\)表示n个点的答案.考虑容斥,用所有连边方案减去有多个连通块的方案.枚举1号点所在的连通块大小: \(f_i=2^{i(i-1)/2}-\sum_{j>0}^{i-1}f_j ...
- BZOJ3675 & 洛谷3648 & UOJ104:[Apio2014]序列分割——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=3675 https://www.luogu.org/problemnew/show/P3648 ht ...
- [洛谷P2408]不同子串个数
题目大意:给你一个字符串,求其中本质不同的字串的个数 题解:同[洛谷P4070][SDOI2016]生成魔咒,只要最后再输出就行了 卡点:无 C++ Code: #include <cstdio ...
- 【CJOJ1494】【洛谷2756】飞行员配对方案问题
题面 题目背景 第二次世界大战时期.. 题目描述 英国皇家空军从沦陷国征募了大量外籍飞行员.由皇家空军派出的每一架飞机都需要配备在航行技能和语言上能互相配合的2 名飞行员,其中1 名是英国飞行员,另1 ...
- 洛谷2973 [USACO10HOL]赶小猪Driving Out the Piggi… 概率 高斯消元
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - 洛谷2973 题意概括 有N个城市,M条双向道路组成的地图,城市标号为1到N.“西瓜炸弹”放在1号城市,保证城 ...
随机推荐
- git 本地代码冲突解决,强制更新
git reset soft,hard,mixed之区别深解 git reset --hard 强制更新覆盖本地 GIT reset命令,似乎让人很迷惑,以至于误解,误用.但是事实上不应该如此难 ...
- In action "Setting JDBC driver jar location unix [Set a variable]" (screen "Select a Database [Configurable banner form]"), property "Script":
java.lang.Exception: JDBC Driver Jar not found. Looking for: /u01/oracle/GG_Director/ERROR: Unresolv ...
- sqlalchemy 外键
建表 from sqlalchemy.ext.declarative import declarative_base Base = declarative_base() from sqlalchemy ...
- Echarts学习之路2(基本配置项)
title:标题组件,包含主标题和副标题. title:{ text:"",//主标题 link:"",//主标题文本超链接 target:"&quo ...
- JSON获取地址
JSON获取地址一: https://github.com/stleary/JSON-java JSON获取地址二: http://genson.io/ JSON获取地址一: https://code ...
- How do I copy files that need root access with scp
server - How do I copy files that need root access with scp? - Ask Ubuntuhttps://askubuntu.com/quest ...
- Hbuilder工具使用
现在用的版本是:HBuilder 9.1.19.201808300739 前段时间自动更新了下,也忘记了是更新后js代码不能正常代码提示,还是又发生了什么事情,导致了不能正常提示,也没时间去排查,卸载 ...
- Java NIO技术总结
一.背景 大家都知道Java BIO,其全称是java blocking IO,相对的Java NIO 全称为java non-blocking IO.顾名思义,java nio 是一种非阻塞IO.N ...
- Django1-HTTP协议介绍
何为http协议(Hypertext Transfer Protocol,超文本传输协议)? 所谓协议,就是指双方遵循的规范.http协议,就是浏览器和服务器之间进行“沟通”的一种规范.我们在看空间, ...
- ionic3隐藏子页面的tabs和配置返回按钮
在app.modlues.ts文件中修改 imports: [ BrowserModule, IonicModule.forRoot(MyApp, { tabsHideOnSubPages: 'tru ...