HDU1760 A New Tetris Game NP态
A New Tetris Game
Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1457 Accepted Submission(s): 713
渐渐得,Lele发觉,玩这个游戏只需要手快而已,几乎不用经过大脑思考。
所以,Lele想出一个新的玩法。
Lele和姐姐先拿出一块长方形的棋盘,这个棋盘有些格子是不可用的,剩下的都是可用的。Lele和姐姐拿出俄罗斯方块里的正方形方块(大小为2*2的正方形方块)轮流往棋盘里放,要注意的是,放进去的正方形方块不能叠在棋盘不可用的格子上,也不能叠在已经放了的正方形方块上。
到最后,谁不能再放正方形方块,谁就输了。
现在,假设每次Lele和姐姐都很聪明,都能按最优策略放正方形,并且每次都是Lele先放正方形,你能告诉他他是否一定能赢姐姐吗?
每组测试第一行包含两个正整数N和M(0<N*M<50)分别代表棋盘的行数和列数。
接下来有N行,每行M个0或1的数字代表整个棋盘。
其中0是代表棋盘该位置可用,1是代表棋盘该位置不可用
你可以假定,每个棋盘中,0的个数不会超过40个。
题意:给你一个n*m的矩形,0表示空着的,1反之,现在两个人轮流放2*2的矩形,谁不能放了,谁就输了。
题解:每一个状态的NP态由后继状态决定,后继状态存在P态既为N态,后继状态全为N态既为P态
后继状态的状态同上,可以用递归暴力计算
#include<bits/stdc++.h>
#define mes(x) memset(x, 0, sizeof(x));
#define ll __int64
const long long mod = 1e9+;
const int MAX = 0x7ffffff;
using namespace std;
int n,m, a[][];
//NP态
int dfs(){
for(int i=;i<n;i++)
for(int j=;j<m;j++)
if(a[i][j]==&&a[i-][j-]==&&a[i-][j]==&&a[i][j-]==){
a[i][j] = a[i-][j-] = a[i][j-] = a[i-][j] = ;
if(dfs() == ) {
a[i][j] = a[i-][j-] = a[i][j-] = a[i-][j] = ;
return ;
}
a[i][j] = a[i-][j-] = a[i][j-] = a[i-][j] = ;
}
return ;
}
int main()
{
while(~scanf("%d%d", &n, &m)){
for(int i=;i<n;i++)
for(int j=;j<m;j++)
scanf("%1d", &a[i][j]);
printf("%s\n", dfs()?"Yes":"No");
}
return ;
}
HDU1760 A New Tetris Game NP态的更多相关文章
- HDU-1760 A New Tetris Game DFS
曾经,Lele和他姐姐最喜欢,玩得最久的游戏就是俄罗斯方块(Tetris)了. 渐渐得,Lele发觉,玩这个游戏只需要手快而已,几乎不用经过大脑思考. 所以,Lele想出一个新的玩法. Lele和姐姐 ...
- 《ACM国际大学生程序设计竞赛题解I》——6.10
Pku 1143: Description Christine and Matt are playing an exciting game they just invented: the Number ...
- (Chrome42)Lodop总计页面提示“未安装”要么“请升级”可能的原因和解决方案
Chrome42版本号之后,支持NP态,要手工打开,方法例如以下: 在谷歌浏览器地址栏输入: chrome://flags/#enable-npapi 然后找到"启用NPAPI"地 ...
- 湖南大学第十四届ACM程序设计新生杯(重现赛)I:II play with GG(博弈论||DP)
链接:https://ac.nowcoder.com/acm/contest/338/I 来源:牛客网 题目描述 IG won the S championship and many people a ...
- CodeForces 787 题解
A题,因为数据范围很小,所以只要暴力即可,如果能相遇一定范围不大,如果范围很大还没相遇一定是不会相遇的了.正解应当是用扩展欧几里得计算这个方程的整数解,再想办法看看有没有正整数解才是. B题,只要看懂 ...
- 对抗生成网络-图像卷积-mnist数据生成(代码) 1.tf.layers.conv2d(卷积操作) 2.tf.layers.conv2d_transpose(反卷积操作) 3.tf.layers.batch_normalize(归一化操作) 4.tf.maximum(用于lrelu) 5.tf.train_variable(训练中所有参数) 6.np.random.uniform(生成正态数据
1. tf.layers.conv2d(input, filter, kernel_size, stride, padding) # 进行卷积操作 参数说明:input输入数据, filter特征图的 ...
- 正态QQ图的原理
code{white-space: pre;} pre:not([class]) { background-color: white; }if (window.hljs && docu ...
- SciPy - 正态性 与 KS 检验
假设检验的基本思想 若对总体的某个假设是真实的,那么不利于或者不能支持这一假设的事件A在一次试验中是几乎不可能发生的:如果事件A真的发生了,则有理由怀疑这一假设的真实性,从而拒绝该假设: 假设检验实质 ...
- 机器学习:正态方程 python实现
目录 前言 一.算法介绍 二.核心算法 1. 公式 2.python实现 总结 前言 使用python简单实现机器学习中正态方程算法. 一.算法介绍 与梯度下降算法相比,正态方程同样用于解决最小化代价 ...
随机推荐
- Git实用命令手册
下载代码 git clone <git地址> 用户配置 git config —-global user.name <name> git config —-global use ...
- 简单的oracle分页语句
SELECT * FROM ( SELECT rownum rn,te.* FROM (SELECT * FROM tb_enterprise) te WHERE rownum <= 10) ...
- vue 实现分转元的 过滤器
1.啥也不说了直接上代码吧 使用起来超方便 Vue.filter('amount', function (number) { // var number = +val.replace(/[^\d.] ...
- commonJS 浏览器实现
commonjs http://www.commonjs.org/ CommonJS JavaScript is a powerful object oriented language with so ...
- noi 1.5 43:质因数分解
描述 已知正整数 n 是两个不同的质数的乘积,试求出较大的那个质数. 输入 输入只有一行,包含一个正整数 n.对于60%的数据,6 ≤ n ≤ 1000.对于100%的数据,6 ≤ n ≤ 2*10^ ...
- nginx----------------环境搭建遇到的一些问题汇总--(多域名配置,配置文件修改问题)
nginx的启动命令是:(通用) /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf 重启命令: /usr/local/ng ...
- android 多媒体数据库(非原创)
推荐文章:http://fzlihui.iteye.com/blog/1097952,http://www.cnblogs.com/pen-ink/archive/2011/06/02/2068410 ...
- 2.2 C#的注释
注释,是代码中的一些“说明文档”,注释注释本身不会参与程序代码的编译和运行,仅仅是为了方便程序员阅读. C#的注释分为:单行注释.多行注释.文档注释. 单行注释的符号是2条斜杠线(斜线的方向是左下到右 ...
- mysql免安装方法
在官网上下载了个mysql-installer-community-5.6.27.0.msi,需要安装环境,检测未通过,很麻烦.之后网上查了资料之后直接下载了个压缩包mysql-5.6.27-winx ...
- LED将为我闪烁:控制发光二极管
一个完整的linux驱动主要由内部处理和与硬件交互两部分组成.其中内部处理主要是指linux驱动的装载.卸载.与设备文件相关的动作处理以及业务逻辑等:与硬件交互主要是指通过iowrite32.io ...