hdoj 1404 Digital Deletions(博弈论)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1404
一看就是博弈论的题目,但并没有什么思路,看了题解,才明白
就是求六位数的SG函数,暴力一遍,打表就OK。
具体的操作是先找P态,即最终无法移动的状态,可知无数可取是P态,0是N态,1是P态,然后从1开始进行暴力,
所有可以到!sg[i]的点标记为N态,暴力过程为标记一步可以到sg[i]的数,包括两类:
一类是仅某一位数字不同,提取方法比较巧妙:
; --i){ int m = x; ; ; j < i; ++j) ; )) / base; ; ++j){ m += base; sg[m] = ;//越界了 } }
另一类是在sg[i]不足6位时在后面填一个0,其后填其他数:
){ int m = x; ; ;i++){ m *= ; ; j < base; ++j) sg[m+j] = ; ; } }
总的代码如下:
#include<stdio.h> #include<cstring> using namespace std; ; int sg[MAXN]; int get_lgt(int x){ ) ; ) ; ) ; ) ; ) ; ; } void extend(int x){ int lgt = get_lgt(x); ; --i){ int m = x; ; ; j < i; ++j) ; )) / base; ; ++j){ m += base; sg[m] = ;//越界了 } } //提取每一位的数字,遍历到9 ){ int m = x; ; ;i++){ m *= ; ; j < base; ++j) sg[m+j] = ; ; } } } // sg[0] = 1;N态 sg[1] = 0;P态 // 终态是P态,可以移动到P态的是N态,所有移动都会导致N态的是P态 void init(){ memset(sg,,sizeof(sg)); sg[] = ; ; i < MAXN; ++i) if(!sg[i])//N态 extend(i); } int main(){ freopen("test.out","r",stdin); freopen("mtest.out","w",stdout); init(); ]; int lgt; int n; while(~scanf("%s",&str)){ n = ; ]==' ) printf("Yes\n"); else{ lgt = strlen(str); ; i < lgt; ++i){ n *= ; n += str[i]-'; }//字符串转化为整数 if(sg[n]) printf("Yes\n"); else printf("No\n"); } } }
hdoj 1404 Digital Deletions(博弈论)的更多相关文章
- hdu 1404/zoj 2725 Digital Deletions 博弈论
暴力打表!! 代码如下: #include<iostream> #include<algorithm> #include<cstdio> #include<c ...
- Hdu 1404 Digital Deletions
Problem地址:http://acm.hdu.edu.cn/showproblem.php?pid=1404 刚开始想采取找规律的方法解题,可以没有发现规律.无奈,只好采用求PN点的方法. 我们假 ...
- HDU 1404 Digital Deletions (暴力博弈)
题意:给定一个数字串,最长是6,然后有两种操作. 第一种是,把该串中的一个数字换成一个比该数字小的数,比如 5 可以换成 0,1,2,3,4. e.g. 12345 --> 12341 第二 ...
- Digital Deletions HDU - 1404
Digital deletions is a two-player game. The rule of the game is as following. Begin by writing down ...
- HDU 1404 (博弈) Digital Deletions
首先如果第一个数字是0的话,那么先手必胜. 对于一个已知的先手必败状态,凡是能转移到先手必败的状态一定是必胜状态. 比如1是必败状态,那么2~9可以转移到1,所以是必胜状态. 10,10*,10**, ...
- hdu 1404 找sg ***
HDU 1404 Digital Deletions 一串由0~9组成的数字,可以进行两个操作:1.把其中一个数变为比它小的数:2.把其中一个数字0及其右边的所以数字删除. 两人轮流进行操作,最后把 ...
- 博弈论BOSS
基础博弈的小结:http://blog.csdn.net/acm_cxlove/article/details/7854530 经典翻硬币游戏小结:http://blog.csdn.net/acm_c ...
- 【转】ACM博弈知识汇总
博弈知识汇总 转自:http://www.cnblogs.com/kuangbin/archive/2011/08/28/2156426.html 有一种很有意思的游戏,就是有物体若干堆,可以是火柴棍 ...
- ACM博弈知识汇总(转)
博弈知识汇总 有一种很有意思的游戏,就是有物体若干堆,可以是火柴棍或是围棋子等等均可.两个人轮流从堆中取物体若干,规定最后取光物体者取胜.这是我国民间很古老的一个游戏,别看这游戏极其简单,却蕴含着深刻 ...
随机推荐
- POJ 2369 Permutations
傻逼图论. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm& ...
- 所在实习公司的JS笔试题
在班上无聊的时候看到了一份JS笔试题(我是电面进去的,没做过这份题~~),开始还觉得蛮简单......后来觉得还是很有意思的,贴出来一起看看. 题目一: if(!("a" in w ...
- Android Studio 学习 - 程序安装
痛定思痛,从今天开始专心学习AndriodStudio.希望以此为契机,把Java学扎实.更希望自己能坚持下去,不要半途而废. 记录一些日常的工作以及碰到的问题,权当勉励自己.荀子曰:吾尝终日而思矣, ...
- linux上改变mysql数据文件的位置
用软连接改变了/var/lib/mysql的位置,并设置好mysql.mysql的权限,但是发现还是不能启动. 发现/var/log/mysqld.log 150308 16:16:02 [Warni ...
- 【转】 IOS 项目配置--构建输出DIR
原文网址:http://blog.csdn.net/fengsh998/article/details/8868871 通常在情一般都不建议使用绝对路径,因为写死之后,换环境,换平台,又要重新修改路径 ...
- App中嵌入网页浏览器
TOWebViewController 插件 NSURL *url =[NSURL URLWithString:@"http://192.168.1.134:8180/Home/IndexP ...
- 0bjective-c 之 NSString 使用详解
查找资料的时候发现不错的文章,自己翻译之后分享给大家! 一个基本的该类型字符串例子: @"This is a constant character string object"; ...
- Android数据库升级,数据不丢失解决方案
假设要更新TableC表,建议的做法是: 1) 将TableC重命名为TableC_temp SQL语句可以这样写:ALERT TABLE TableC RENAME TO TableC_temp; ...
- eclipse 报错汇总
1.Eclipse 启动时,报错: Fail to create the java virtual machine 已解决.方法:eclipse.ini 中-vmargs-Dosgi.requir ...
- 动手动脑之查看String.equals()方法的实现代码及解释
动手动脑 请查看String.equals()方法的实现代码,注意学习其实现方法. 第一个是false,后三个是true. package stringtest; public class Strin ...