POJ 3537 Crosses and Crosses
来源:互联网 发布:倩女幽魂游戏mac版 编辑:程序博客网 时间:2024/06/08 16:58
题意:有个2人玩的游戏在一个规模为1*n的棋盘上进行,每次一个人选择一个地方画上'X',一旦某个人画上X后出现了连续3个X,那么这个人就赢了。给你n(3≤n≤=2000)问谁会赢。
题解:明显的博弈论,关键是确定SG函数。
考虑到如果画上一个X,就会有临近区域不能画X,也就是下一个人能画X的区域就变了,那么问题可以转换为谁不能画X谁就输了。
接着考虑每次画X的转移情况,最简单的就是画最左边的1~3个格子,这时剩下还有n-3~n-5个连续区域能画;如果画在4~n-3位置,就会把原问题分成两个子问题,都是SG博弈问题,所以直接求两者异或就行了。
#include<cstdio>#include<cstring>using namespace std;int sg[2005];bool temp[2005];int main(){ sg[0]=0; sg[1]=1; sg[2]=1; sg[3]=1; sg[4]=2; sg[5]=2; for(int i=6;i<=2000;i++) { memset(temp,false,sizeof(temp)); temp[sg[i-3]]=temp[sg[i-4]]=temp[sg[i-5]]=true; for(int j=1;j<=i-5-j;j++) temp[sg[j]^sg[i-5-j]]=true; for(int j=0;j<=2000;j++) if(!temp[j]) { sg[i]=j; break; } } int n; while(scanf("%d",&n)!=EOF) { printf("%d\n",sg[n]?1:2); } return 0;}
- POJ 3537 Crosses and Crosses
- POJ 3537 Crosses and Crosses
- POJ 3537 Crosses and Crosses
- POJ 3537 Crosses and Crosses
- POJ-3537-Crosses and Crosses
- Crosses and Crosses POJ 3537
- POJ Crosses and Crosses
- POJ Crosses and Crosses
- POJ 3537 Crosses and Crosses(博弈)
- POJ 3537 Crosses and Crosses SG函数
- POJ 3537 Crosses and Crosses 已翻译
- POJ-3537 Crosses and Crosses (博弈, SG函数)
- poj 3537Crosses and Crosses 博弈论之grundy值
- 博弈之 Nim 游戏&poj 3537 Crosses and Crosses
- poj 3537 Crosses and Crosses (Multi-SG游戏)
- poj 3537 Crosses and Crosses(NIM变形)@
- poj3537 Crosses and Crosses
- Crosses and Crosses
- SSIS 组件使用 Foreach Loop Container and Execute SQL Task
- ubuntu下安装Apache+PHP+Mysql
- eclipse无法启动android模拟器,提示“Failed to allocate memory: 8”
- Android 显示系统分析
- 将NSString转换成UTF8编码的NSString
- POJ 3537 Crosses and Crosses
- 4个女人要过一座桥的问题
- 程序员和青蛙公主
- msi安装部署
- ubuntu更新错误W:Failed to fetch
- 更改LOGO、禁止匿名编辑
- ip地址、子网掩码、网关的关系
- SQL获取所有数据库名、表名、储存过程以及参数列表
- 运用Jconsole监控JVM