SG定理:

根据Sprague-Grundy定理(SG定理),对于某些博弈论问题可以这样思考:

首先可以确定一个必败状态(记为P)或必胜状态(记为N);

这样一来,若某一状态X若 可以 直接转移到P,则可以确定X为必胜状态;

若某一状态X 只能 转移到N,则可以确定X为必败状态。

以此通过递推可确定先手必胜或必败。

题一:hdu1404

代码:

#include<iostream>
#include<cstring>
#include<cmath>
#include<cstdlib>
#include<cstdio>
using namespace std;
const int maxn = 1e7+6;
bool sg[maxn]; int intlen(int x)
{
for (int i=6;i>0;i--)
{
int k=pow(10,(i-1));
if (x / k) return i;
}
} void GetSG(int x)
{
//cout<<x<<endl;
int len=intlen(x);
for(int i=0; i<len; ++i)
{
int k=pow(10, i);
int q=x/k%10;
int y=x;
for(int j=q; j<9; ++j)
{
y+=k;
sg[y]=true;//可一步到达必败状态则为必胜
}
}
int y=x, k=1;
while(len<6)
{
y*=10;
for(int i=0; i<k; ++i)
sg[y+i]=true;
k*=10;
len++;
}
} int main()
{
memset(sg, false, sizeof(sg));
sg[0]=true;
for(int i=1; i<1000000; ++i)
if(!sg[i])//必败则进入
GetSG(i);
char n[10];
while(gets(n))
{
if(n[0]=='0')
{
puts("Yes");
continue;
}
int m=atoi(n);
if(sg[m]) puts("Yes");
else puts("No");
}
return 0;
}

题二:hdu1404

代码:

#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std; int main()
{
long long n;
while(cin>>n)
{
int x=0;
for(; n>1; ++x)
{
if(x&1)
n = ceil(n*1.0/2);
else
n = ceil(n*1.0/9);
}
if(x&1) puts("Stan wins.");
else puts("Ollie wins.");
}
return 0;
}

最新文章

  1. [转]Web APi之认证(Authentication)及授权(Authorization)【一】(十二)
  2. phpcms调取数据库的两种机制
  3. Linux posix线程库总结
  4. 使用神经网络来识别手写数字【译】(三)- 用Python代码实现
  5. html5,加密元素
  6. mysql临时表的产生
  7. 关于HTML面试题汇总之H5
  8. python 读写 Excel文件
  9. CSS3伪类nth-child结合transiton动画实现文字若影若现
  10. StringBuilder和string.Format性能对比
  11. [Google Code Jam (Qualification Round 2014) ] A. Magic Trick
  12. Lua多重继承
  13. jquery中read与js中onload区别
  14. (3两个例子)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  15. spring boot +mybatis(通过properties配置) 集成
  16. leetcode02大数相加
  17. CentOS 安装、配置supervisord
  18. django----查看数据库中的sql语句
  19. 第四章&#160;栈与队列(c5)栈应用:逆波兰表达式
  20. openstack 部署笔记--neutron控制节点

热门文章

  1. JavaScript闭包函数的理解
  2. 本周 GitHub 速览:您的代码有声儿吗?(Vol.38)
  3. 关于windows服务器创建一个ps1脚本的周期性定时任务
  4. keras中的mask操作
  5. python语言开发环境配置
  6. Quartz.NET集成UI版
  7. SON Web Tokens 工具类 [ JwtUtil ]
  8. Centos-检查文件系统并尝试修复-fsck
  9. Sequence(Poj2442)
  10. 086 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 03 面向对象基础总结 01 面向对象基础(类和对象)总结