hdu1404,hdu1517 (博弈论入门)
2024-10-21 11:38:58
SG定理:
根据Sprague-Grundy定理(SG定理),对于某些博弈论问题可以这样思考:
首先可以确定一个必败状态(记为P)或必胜状态(记为N);
这样一来,若某一状态X若 可以 直接转移到P,则可以确定X为必胜状态;
若某一状态X 只能 转移到N,则可以确定X为必败状态。
以此通过递推可确定先手必胜或必败。
代码:
#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;
}
代码:
#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;
}
最新文章
- [转]Web APi之认证(Authentication)及授权(Authorization)【一】(十二)
- phpcms调取数据库的两种机制
- Linux posix线程库总结
- 使用神经网络来识别手写数字【译】(三)- 用Python代码实现
- html5,加密元素
- mysql临时表的产生
- 关于HTML面试题汇总之H5
- python 读写 Excel文件
- CSS3伪类nth-child结合transiton动画实现文字若影若现
- StringBuilder和string.Format性能对比
- [Google Code Jam (Qualification Round 2014) ] A. Magic Trick
- Lua多重继承
- jquery中read与js中onload区别
- (3两个例子)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
- spring boot +mybatis(通过properties配置) 集成
- leetcode02大数相加
- CentOS 安装、配置supervisord
- django----查看数据库中的sql语句
- 第四章&#160;栈与队列(c5)栈应用:逆波兰表达式
- openstack 部署笔记--neutron控制节点
热门文章
- JavaScript闭包函数的理解
- 本周 GitHub 速览:您的代码有声儿吗?(Vol.38)
- 关于windows服务器创建一个ps1脚本的周期性定时任务
- keras中的mask操作
- python语言开发环境配置
- Quartz.NET集成UI版
- SON Web Tokens 工具类 [ JwtUtil ]
- Centos-检查文件系统并尝试修复-fsck
- Sequence(Poj2442)
- 086 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 03 面向对象基础总结 01 面向对象基础(类和对象)总结