LuoguP4420 [COCI2017-2018#1] Tetris 题解
Content
有一个 \(n\times m\) 的拼图,摆上了几块俄罗斯方块图形。已知这些图形可能包含以下这五种(可以旋转),求出下列类型的俄罗斯方块图形数量。

数据范围:\(1\leqslant n,m\leqslant 10\)。
Solution
像我这样菜的人,这种题目只有一种方法:暴力判断。
各位玩过俄罗斯方块的都知道,上面 \(5\) 种图形中,第一种图形无论怎么旋转都是一样的,第二、三、四种都可以通过旋转得到两种不同的图形,第五种可以通过旋转得到 \(4\) 种不同的图形。具体是什么样的想必各位都能够想象得出来。
于是,我们只需要对这总共 \(1+2\times 3+4=11\) 种情况进行暴力判断就好了。抓住这些图形的特征,并转化成代码语言就能够迎刃而解。
然而最烦人的就是打代码的过程……
Code
仅搬出判断五种不同类型的图形的函数 \(\texttt{judge1}\sim\texttt{judge5}\),毕竟这才是整个代码的精髓,也是我打得最要命的地方……
inline bool judge1(int i, int j) {return a[i][j] != '.' && (a[i][j] == a[i + 1][j] && a[i][j] == a[i + 1][j + 1] && a[i][j] == a[i][j + 1]);}
inline bool judge2(int i, int j) {return a[i][j] != '.' && ((a[i][j] == a[i][j + 1] && a[i][j] == a[i][j + 2] && a[i][j] == a[i][j + 3]) || (a[i][j] == a[i + 1][j] && a[i][j] == a[i + 2][j] && a[i][j] == a[i + 3][j]));}
inline bool judge3(int i, int j) {return a[i][j] != '.' && ((a[i][j] == a[i][j - 1] && a[i][j] == a[i + 1][j - 1] && a[i][j] == a[i + 1][j - 2]) || (a[i][j] == a[i + 1][j] && a[i][j] == a[i + 1][j + 1] && a[i][j] == a[i + 2][j + 1]));}
inline bool judge4(int i, int j) {return a[i][j] != '.' && ((a[i][j] == a[i][j + 1] && a[i][j] == a[i + 1][j + 1] && a[i][j] == a[i + 1][j + 2]) || (a[i][j] == a[i + 1][j] && a[i][j] == a[i + 1][j - 1] && a[i][j] == a[i + 2][j - 1]));}
inline bool judge5(int i, int j) {return a[i][j] != '.' && ((a[i][j] == a[i + 1][j - 1] && a[i][j] == a[i + 1][j] && a[i][j] == a[i + 1][j + 1]) || (a[i][j] == a[i - 1][j - 1] && a[i][j] == a[i][j - 1] && a[i][j] == a[i + 1][j - 1]) || (a[i][j] == a[i - 1][j - 1] && a[i][j] == a[i - 1][j] && a[i][j] == a[i - 1][j + 1]) || (a[i][j] == a[i - 1][j + 1] && a[i][j] == a[i][j + 1] && a[i][j] == a[i + 1][j + 1]));}
LuoguP4420 [COCI2017-2018#1] Tetris 题解的更多相关文章
- 2018 EC-Final 部分题解 (A,J)
目录 The 2018 ICPC Asia-East Continent Final A.Exotic - Ancient City(思路 并查集) J.Philosophical - Balance ...
- Avito Cool Challenge 2018 A. B题解
A. Definite Game 题目链接:https://codeforces.com/contest/1081/problem/A 题意: 给出一个数v,然后让你可以重复多次减去一个数d,满足v% ...
- SDOI 2018二轮题解(除Day2T1)
博主诈尸啦 虽然一轮之后就退役了但是二轮还是要去划划水呀~ 然鹅学了不到一个月文化课再回来看OI的东西有一种恍如隔世的感觉,烤前感觉也没啥可复习的,就补一补去年二轮的题吧. 题目思路基本都参考自sha ...
- [NOIP 2018 Day1] 简要题解
[题目链接] 铺设道路 : https://www.luogu.org/problemnew/show/P5019 货币系统 : https://www.luogu.org/problemnew/sh ...
- 洛谷月赛2018.8 T1题解(U28036 Nagisa loves Tomoya)
[题解] 我们设原来的数组为a1,a2,a3..., 那么一次操作之后的数组变为a1+a2,a2+a3,a3+a4..., 两次操作之后数组变为a1+2a2+a3,a2+2a3+a4,a3+2a4+a ...
- 【GDOI】2018题目及题解(未写完)
我的游记:https://www.cnblogs.com/huangzihaoal/p/11154228.html DAY1 题目 T1 农场 [题目描述] [输入] 第一行,一个整数n. 第二行,n ...
- ICPC — International Collegiate Programming Contest Asia Regional Contest, Yokohama, 2018–12–09 题解
目录 注意!!此题解存在大量假算法,请各位巨佬明辨! Problem A Digits Are Not Just Characters 题面 题意 思路 代码 Problem B Arithmetic ...
- BZOJ5251:[九省联考2018]劈配——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=5251 https://loj.ac/problem/2477 <-可以看数据 https: ...
- COCI2017/2018 CONTEST #7
Prosjek 显然,越大的数应该越后参与平均数的计算,这样受较小数的影响就小一些 那我们就排个序,贪心的从最小的数开始往大的计算平均数即可 时间复杂度\(O(nlogn)\) Timovi 把分组分 ...
随机推荐
- 【JVM源码解析】模板解释器解释执行Java字节码指令(上)
本文由HeapDump性能社区首席讲师鸠摩(马智)授权整理发布 第17章-x86-64寄存器 不同的CPU都能够解释的机器语言的体系称为指令集架构(ISA,Instruction Set Archit ...
- python 配置pip镜像源
在本地用户下新建pip文件夹,新建pip.ini [global] index-url = http://mirrors.aliyun.com/pypi/simple/ [install] trust ...
- 重新整理 .net core 实践篇——— 权限中间件源码阅读[四十六]
前言 前面介绍了认证中间件,下面看一下授权中间件. 正文 app.UseAuthorization(); 授权中间件是这个,前面我们提及到认证中间件并不会让整个中间件停止. 认证中间件就两个作用,我们 ...
- 面试官问我HTTP,我真的是
面试官:今天要不来聊聊HTTP吧? 候选者:嗯,HTTP「协议」是客户端和服务器「交互」的一种通迅的格式 候选者:所谓的「协议」实际上就是双方约定好的「格式」,让双方都能看得懂的东西而已 候选者:所谓 ...
- Jmeter BlazeMeter实现web录制
1. BlazeMeter安装和注册 BlazeMeter是一款与Apache JMeter兼容的chrome插件,采用BlazeMeter可以方便的进行流量录制和脚本生成,作为接口测试脚本编写的 ...
- DirectX12 3D 游戏开发与实战第十章内容(上)
仅供个人学习使用,请勿转载.谢谢! 10.混合 本章将研究混合技术,混合技术可以让我们将当前需要光栅化的像素(也称为源像素)和之前已经光栅化到后台缓冲区的像素(也称为目标像素)进行融合.因此,该技术可 ...
- Docker-原理解析
容器! Linux容器是与系统其他部分隔离开的一系列进程,从另一个镜像运行,并由该镜像提供支持进程所需的全部文件.容器提供的镜像包含了应用的所有依赖项,因而在从开发到测试再到生产的整个过程中,它都具有 ...
- Python | 迭代器与zip的一些细节
首先抛出一个困扰本人许久的问题: nums = [1,2,3,4,5,6] numsIter = iter(nums) for _ in zip(*[numsIter]*3): print(_) pr ...
- 学习java 7.23
学习内容: 前面讲解了如果构建GUI界面,其实就是把一些GUI的组件,按照一定的布局放入到容器中展示就可以了.在实际开发中,除了主界面,还有一类比较重要的内容就是菜单相关组件,可以通过菜单相关组件很方 ...
- day08 Nginx模块
day08 Nginx模块 lnmp架构 l :Linux n :Nginx m :MySQL p :Python/PHP lnmp架构:是最简单的架构 Nginx中的模块(Python模块):前提是 ...