玩过俄罗斯方块?那你知道俄罗斯方块共有七种吧(其实只有五种)

给一个黑白图,每次能将某些区域的格子黑白反转,至于某些区域的意思嘛,就是俄罗斯方块形状的区域咯(可水平翻转、上下翻转、旋转)
求能否将图变成全白
Input
多组数据,第一行一个正整数 T,表示数据组数
每组数据中第一行两个正整数 n,m,表示图的长和宽
接下来 n 行,每行 m 个数字,表示第 i 行第 j 列的格子的颜色,0为白,1为黑 T<=1000,∑n*m<=10000000
Output
对于每组数据,若能将图变成全白,则输出一行字符串"Yes",否则输出"No"(不包含双引号)
Input示例
1
4 4
0110
0110
1111
1111
Output示例
Yes
————————————————————————————————————————————————————————————————————————————————
这道题呢 我们可以靠一个 2x2 的矩阵将所有的 1 都转换到最后一行 和 最后一列
然后靠 1x4 将所有的一转换到最后一列 和 最下面一列 的三各
最后用 7 形状的 把问题转换成 右下角的三个格
最后发现偶数有解 奇数无解
在这个过程中我们又发现最后的奇偶 和 原来矩阵的 奇偶一样 这个就自己证明把
当然 1x?2x2 需要特判一波
#include<stdio.h>
#include<cstring>
#include<algorithm>
using namespace std;
const int M=;
int read(){
int ans=,f=,c=getchar();
while(c<''||c>''){if(c=='-') f=-; c=getchar();}
while(c>=''&&c<=''){ans=ans*+(c-''); c=getchar();}
return ans*f;
}
int ans,T,n,m;
bool s[M];
char c;
bool isdigit(char c) {return c>='' && c<='';}
int main()
{
T=read();
while(T--){
n=read(); m=read();
if(n>m) swap(n,m);
while (!isdigit(c=getchar()));
if (n==){
for (int i=;i<m;i++) {s[i]=(c-''); while(!isdigit(c=getchar()));}
s[m]=(c-'');
for (int i=;i<=m-;i++)
if(s[i]) for(int j=;j<=;j++) s[i+j]^=;
if (s[m-]||s[m-]||s[m]) printf("No\n");
else printf("Yes\n");
}
else if (n==&&m==){
int ans=;
for (int i=;i<;i++){
ans+=(c-'');
while (!isdigit(c=getchar()));
}
ans+=(c-'');
if(ans==||!ans) printf("Yes\n");
else printf("No\n");
}
else{
int ans=;
for (int i=;i<=n;i++)
for (int j=;j<=m;j++)
{
if (i==n&&j==m) break;
ans+=(c-'');
while (!isdigit(c=getchar()));
}
ans+=(c-'');
if (ans%) printf("No\n");
else printf("Yes\n");
}
}
return ;
}

最新文章

  1. Cobbler自动化批量安装linux服务器的操作记录
  2. JAVA字符串转日期或日期转字
  3. [转]Java程序员们最常犯的10个错误
  4. Dev的DocumentManager添加窗体
  5. ios开发--常用宏定义(部分转)
  6. iOS学习笔记之ARC内存管理
  7. iPhone手机屏幕的尺寸
  8. elastic search 学习笔记
  9. 我的第一个Servlet
  10. html标签元素分类
  11. Oracle 11gR2 RAC 安装配置
  12. 流量计算-Jstorm提交Topology过程(下一个)
  13. linux下一个eclipse组态jdk
  14. 总结&#183;CSS3中定位模型之position属性的使用方法
  15. Oozie时出现org.apache.oozie.service.ServiceException: E0103: Could not load service classes, Cannot load JDBC driver class &#39;com.mysql.jdbc.Driver&#39;
  16. dubbo搭建例子
  17. [HZOI 2016]公路修建
  18. mySQL安装与基础配置
  19. 解决 TCP_socket 粘包问题
  20. 链表有环判断,快慢指针两种方法/合并链表/删除重复元素/二分递归和while

热门文章

  1. php扩展开发-资源类型
  2. 环形缓冲区实现类(Delphi)
  3. python IDLE中如何执行for、while、if等多行语句
  4. hover 改变另一个标签的属性
  5. 论如何入门地使用vscode
  6. 用scrapy数据抓取实践
  7. python之列表/元组/字典/字符串
  8. 不吹不擂,你想要的Python面试都在这里了【315+道题】+精心整理的解答
  9. Python网络编程(weekly summary1)
  10. ironic的自动化脚本