51 nod 1851 俄罗斯方块

news/2024/10/19 0:19:47/
1851 俄罗斯方块
基准时间限制:1 秒 空间限制:131072 KB 分值: 160  难度:6级算法题

 
玩过俄罗斯方块?那你知道俄罗斯方块共有七种吧(其实只有五种)
给一个黑白图,每次能将某些区域的格子黑白反转,至于某些区域的意思嘛,就是俄罗斯方块形状的区域咯(可水平翻转、上下翻转、旋转)
求能否将图变成全白
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
首先这题要求  O(nm)  的复杂度,这是读入复杂度,所以这启发我们去找规律,而不是去搜索
我们可以通过某些方块的奇怪组合来组成一些简单的操作
操作1:
+ =
操作2:
+ =
操作3:
+ =
上述操作都可以认为是将某个黑格平移,或者是两两抵消
但是有条件限制:需要一个 2*3 的空间
所以当棋盘上能创造一个 2*3 的空间时,只需要判断黑格个数的奇偶性即可,奇数为 No,偶数为 Yes
那么假如棋盘小于 2*3 呢?
两种情况:2*2 和 1*?
2*2 只需要考虑2*2的正方形方块即可
1*? 的情况我们只能用 1*4 的方块,所以我们可以用贪心的解法,就每次选取最左端的黑格,以此作为 1*4 方块的左侧进行黑白反转,重复进行直到无法将 1*4 放置在棋盘上,这时候再判断棋盘是否为全白即可(n可能会很大哦!)
My Code
vart,k,n,m,sum,i,j,q:longint;p,f:boolean;s:string;a:array[1..10000,1..10000] of boolean;
beginreadln(t);for k:=1 to t dobeginreadln(n,m);{if (t=1)and(n=3000000)and(m=1) thenbeginwriteln('No');break; end;}sum:=0;for i:=1 to n dobeginreadln(s);for j:=1 to m doif s[j]='1' thenbegina[i,j]:=true;inc(sum);end else a[i,j]:=false;end;if n>m thenbeginfor i:=1 to n dofor j:=1 to m dobeginp:=a[i,j];a[i,j]:=a[j,i];a[j,i]:=p;end;q:=n;n:=m;m:=q;end;if (n>=2)and(m>=3) thenbeginif sum mod 2=1 then writeln('No') else writeln('Yes');continue;end;if (n=2)and(m=2) thenbeginif (sum=4)or(sum=0) then writeln('Yes') else writeln('No');continue;end;if n=1 thenbeginfor i:=1 to m-3 doif a[1,i] thenfor j:=0 to 3 doa[1,i+j]:=not(a[1,i+j]);f:=true;for i:=1 to m doif a[1,i]=true thenbeginf:=false;break;end;if f then writeln('Yes') else writeln('No');end;end;
end.

http://www.ppmy.cn/news/394748.html

相关文章

基于51单片机的俄罗斯方块游戏

俄罗斯方块游戏算法 请参考俄罗斯方块游戏的算法 1.概述 俄罗斯方块是一款风靡全球的益智游戏。它规则简单&#xff0c;容易上手&#xff0c;且游戏过程变化无穷&#xff0c;使用户在游戏中得到乐趣。  本设计是采用单片机来实现的智能俄罗斯方块游戏&#xff0c;该设计选用的…

俄罗斯方块。

目录 零. 直接上代码代码运行截图 一. 基本的游戏知识1.1 下面是这7种基本方块&#xff1a;1.2.游戏规则&#xff1a; 二. 思路2.1游戏大体思路2.2 main()函数主要结构 三. 编译环境&#xff1a;四. 关于一些函数的解释4.1关于控制台、游戏界面、颜色、光标设置、菜单函数4.1.1…

教团1886:高端的半成品电影

0 前言 其实我在很久以前就关注了这个游戏&#xff0c;因为听说教团1886是一个评论分化比较严重的游戏&#xff0c;夸他的人无一不夸他精致如CG的画面&#xff0c;贬低他的则从奇怪的视野和糟糕的游戏性入手。 正好上个月我手头省下来了一点闲钱&#xff0c;于是在2022年即将…

俄罗斯方块Tetris Beat for Mac(休闲益智游戏)

Tetris Beat for Mac是将俄罗斯方块经典玩法与独特的音乐和创新的节奏机制相融合的一款休闲益智游戏&#xff0c;tetris beat mac游戏共分为DROP、TAP以及MARATHON三种模式&#xff0c;您可以选择经典的俄罗斯方块游戏模式&#xff0c;也可以体验结合力新机制&#xff0c;节拍游…

每天一道算法题第3天--排序子序列

排序子序列 1.题目2.题目解析3.代码 1.题目 链接: 排序子序列 2.题目解析 【题目解析】&#xff1a; 本题要求解的是排序子序列&#xff0c;排序子序列为非递增或者非递减&#xff0c;很多同学在这个非递增、非递减问题上很纠 结&#xff0c;注意&#xff1a;非递减就是a[i…

诺基亚E50/E61/E61i/E62比较,仅供个人参考

过完年打算换部手机&#xff0c;原来的多普达D700因为修的时间比用的时间还多(现在还在修理中)&#xff0c;实在不想用了。 用过了MOTO的E680g(linux)&#xff0c;又用多普达的D700(windows mobile&#xff0c;从2003刷到5.0)&#xff0c;感觉是要么界面不好看&#xff0c;要么…

e50-参数

上市日期2006年10月手机类型智能手机&#xff1b;音乐手机手机制式GSM支持频段GSM850/900/1800/1900MHz网络连接GPRS,EDGE&#xff08;EGPRS 等级 Class B&#xff0c;MSC 10&#xff09; GPRS&#xff08;General Packet Radio Service&#xff0c;通用分组无线业务&#xff0…

诺基亚E50发短信速度慢解决办法

上诺基亚官方网站下载短信加速器&#xff0c;安装之后速度明显快了很多 http://www.nokia.com.cn/cn/support/sms.shtml