poj 3537 Crosses and Crosses 博弈论之grundy值
题意:
给1*n的格子,轮流在上面叉叉,最先画得3个连续叉叉的赢。问先手必胜还是必败。
分析:
求状态的grundy值(也就是sg值),详细怎么求详见代码。为什么这么求要自己想的,仅仅可意会(别人都说去看game theory,呵呵)。
代码:
//poj 3537
//sep9
#include <iostream>
#include <set>
using namespace std;
int grundy[2048];
int h[2048];
int get_grundy(int n)
{
if(n<0)
return 0;
if(grundy[n]!=-1)
return grundy[n];
int h[2048];
memset(h,0,sizeof(h));
for(int i=1;i<=n;++i){
int t=get_grundy(i-3)^get_grundy(n-i-2);
h[t]=1;
}
int i;
for(i=0;h[i];++i);
return grundy[n]=i;
}
int main()
{
int n;
memset(grundy,-1,sizeof(grundy));
grundy[0]=0,grundy[1]=1,grundy[2]=1,grundy[3]=1;
while(scanf("%d",&n)==1)
if(get_grundy(n)!=0)
puts("1");
else
puts("2");
return 0;
}
poj 3537 Crosses and Crosses 博弈论之grundy值的更多相关文章
- 【POJ】【3537】Crosses and Crosses
博弈论 相当于放了x的位置,左右4格都不能再放x了,谁无处可放就输. n<=2000 直接枚举后继状态,暴力求SG函数即可. 例: 0000000->x..0000 / .x..000 / ...
- POJ 3537 Crosses and Crosses
Crosses and Crosses Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 2237 Accepted: 821 Ca ...
- POJ 3537 Crosses and Crosses (NEERC)
Crosses and Crosses Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 4 ...
- poj 3575 Crosses and Crosses(SG函数)
Crosses and Crosses Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 3063 Accepted: 11 ...
- [poj3537]Crosses and Crosses_博弈论
Crosses and Crosses poj-3537 题目大意:给定一个1*n的网格,每次往格子内填一个$\times$,连续的三个即可获胜. 注释:$1\le n\le 2000$. 想法:我们 ...
- 博弈论:寻找先手必胜策略——Grundy值
选修了人工智能课程,老师布置了调研任务:Grundy,开始看了一些资料并没有看懂. 后来找到了一篇文,写的很棒,里面有好多博弈相关的问题与分析,分享出来给大家: http://endless.logd ...
- POJ 3537 multi-sg 暴力求SG
长为n的一列格子,轮流放同种棋子,率先使棋子连成3个者胜. 可以发现每次放一个棋子后,后手都不能放在[x-2,x+2]这个区间,那么相当于每次放棋将游戏分成了两个,不能放棋者败. 暴力求SG即可 /* ...
- POJ.1067 取石子游戏 (博弈论 威佐夫博弈)
POJ.1067 取石子游戏 (博弈论 威佐夫博弈) 题意分析 简单的威佐夫博弈 博弈论快速入门 代码总览 #include <cstdio> #include <cmath> ...
- 硬币游戏2&&Cutting Game——Grundy值
Grundy值 当前状态的Grundy值就是除任意一步所能转移到的状态的Grundy值以外的最小非负整数, 以硬币问题一为例,可写成: int init_grundy() { sg[] = ; ;i ...
随机推荐
- git提交代码出现错误fatal: Unable to create '项目路径/.git/index.lock': File exists.
git提交代码出现错误fatal: Unable to create '项目路径/.git/index.lock': File exists. 具体出错代码如下: 具体原因不详,在stackoverf ...
- 在16aspx.com上下了一个.net程序,怎么修改它的默认登录名和密码?
正常应该有个login.aspx文件,找到登入按钮事件,查看验证用户名密码事件,这个验证就有去搜索用户表,然后在这个用户表修改用户名密码就行了.不排除其他表有用用户名关联
- 计蒜客 28449.算个欧拉函数给大家助助兴-大数的因子个数 (HDU5649.DZY Loves Sorting) ( ACM训练联盟周赛 G)
ACM训练联盟周赛 这一场有几个数据结构的题,但是自己太菜,不会树套树,带插入的区间第K小-替罪羊套函数式线段树, 先立个flag,BZOJ3065: 带插入区间K小值 计蒜客 Zeratul与Xor ...
- Oracle 查询每天执行慢的SQL
本文转载自http://blog.itpub.net/28602568/viewspace-1364844/ 前言: 工作中的您是否有 想对每天慢的sql进行查询.汇总或者行优化等情况,如下SQL希 ...
- luogu P1395 会议
题目描述 有一个村庄居住着n个村民,有n-1条路径使得这n个村民的家联通,每条路径的长度都为1.现在村长希望在某个村民家中召开一场会议,村长希望所有村民到会议地点的距离之和最小,那么村长应该要把会议地 ...
- [BZOJ5110]Yazid的新生舞会
题目大意: 给你一个长度为$n(n\leq 5\times 10^5)$的序列$A_{1\sim n}$.求满足区间众数在区间内出现次数严格大于$\lfloor\frac{r-l+1}{2}\rflo ...
- ubuntu10.10编译TQ2440的x86-qtopia-2.2.0具体问题总结及原因分析
转: http://blog.csdn.net/zyxlinux888/article/details/6705481 http://www.cnblogs.com/liu_xf/archive/20 ...
- Android API level 与version对应关系
https://www.cnblogs.com/jinglecode/p/7753107.html Platform Version API Level VERSION_CODE 中文名称 Andro ...
- 使apache的日志文件里不记录图片文件
找到: LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-A ...
- iOS:UICollectionView纯自定义的布局:瀑布流布局
创建瀑布流有三种方式: 第一种方式:在一个ScrollView里面放入三个单元格高度一样的tableView,禁止tableView滚动,只需让tableView随着ScrollView滚动即可. ...