传送门

题意

nnn个格子,每次每个人可以在一个空闲格子放上一个×

当一个人操作完后出现连续三个叉时就赢了,问先手的胜负状况


我们在pospospos位置放了×后,相当于把局面分成了两半

因为pos−1,pos−2,pos+1,pos+2pos-1,pos-2,pos+1,pos+2pos−1,pos−2,pos+1,pos+2都不能放格子了

一旦放了自己就输了

所以局面分成长度为max(0,pos−3)max(0,pos-3)max(0,pos−3)和长度为max(0,n−pos−2)max(0,n-pos-2)max(0,n−pos−2)的两个局面

那么原问题可以简化为,不能操作的人就算输

那么当长度为零时是不能操作的,所以sg[0]=0sg[0]=0sg[0]=0

那么就可以记忆化搜索了

感觉这种定义sgsgsg的形式比较巧妙

#include <iostream>
#include <cstring>
using namespace std;
const int maxn = 2009;
int n,sg[maxn];
int solve(int n)
{if( sg[n]!=-1 )   return sg[n];bool ok[maxn]; memset( ok,0,sizeof ok );for(int i=1;i<=n;i++)   ok[solve(max(0,i-3))^solve(max(0,n-i-2))] = 1;for(int i=0;i<=n;i++)if( ok[i]==0 ) return sg[n] = i;
}
int main()
{memset( sg,-1,sizeof sg );sg[0] = 0;while( cin >> n ){if( solve(n) )    cout << "1\n";else  cout << "2\n";}
}

POJ 3537.Crosses and Crosses(定义sg函数)相关推荐

  1. (转载)--SG函数和SG定理【详解】

    在介绍SG函数和SG定理之前我们先介绍介绍必胜点与必败点吧. 必胜点和必败点的概念: P点:必败点,换而言之,就是谁处于此位置,则在双方操作正确的情况下必败. N点:必胜点,处于此情况下,双方操作均正 ...

  2. SG函数和SG定理【详解】

    在介绍SG函数和SG定理之前我们先介绍介绍必胜点与必败点吧. 必胜点和必败点的概念: P点:必败点,换而言之,就是谁处于此位置,则在双方操作正确的情况下必败. N点:必胜点,处于此情况下,双方操作均正 ...

  3. poj 3537 Crosses and Crosses 博弈论之grundy值

    题意: 给1*n的格子,轮流在上面叉叉,最先画得3个连续叉叉的赢.问先手必胜还是必败. 分析: 求状态的grundy值(也就是sg值),详细怎么求详见代码.为什么这么求要自己想的,仅仅可意会(别人都说 ...

  4. *【HDU - 1517】【POJ - 2505】A Multiplication Game(博弈,递推找规律或SG函数)

    题干: Stan and Ollie play the game of multiplication by multiplying an integer p by one of the numbers ...

  5. POJ 2425 A Chess Game(有向图SG函数)题解

    题意:给一个有向图,然后个m颗石头放在图上的几个点上,每次只能移动一步,如果不能移动者败 思路:dfs打表sg函数,然后求异或和 代码: #include<queue> #include& ...

  6. SG函数和SG定理(Sprague_Grundy)

    一.必胜点和必败点的概念 P点:必败点,换而言之,就是谁处于此位置,则在双方操作正确的情况下必败.        N点:必胜点,处于此情况下,双方操作均正确的情况下必胜. 必胜点和必败点的性质:    ...

  7. 组合博弈游戏 - SG函数和SG定理

    转载来自:http://blog.csdn.net/luomingjun12315/article/details/45555495 在介绍SG函数和SG定理之前我们先介绍介绍必胜点与必败点吧. 必胜 ...

  8. 组合游戏 - SG函数和SG定理

    在介绍SG函数和SG定理之前我们先介绍介绍必胜点与必败点吧. 必胜点和必败点的概念: P点:必败点,换而言之,就是谁处于此位置,则在双方操作正确的情况下必败. N点:必胜点,处于此情况下,双方操作均正 ...

  9. 【博弈论】博弈论入门笔记(四类基础博弈+SG函数)

    『博弈论定义』 博弈论又被称为对策论(Game Theory):是二人或多人在平等的对局中各自利用对方的策略变换自己的对抗策略,达到取胜目标的理论.博弈论是研究互动决策的理论.博弈可以分析自己与对手的 ...

  10. 博弈论与sg函数入门

    记录一点结论性的东西,推导见百度吧. 首先博弈的前提是双方"绝对理智". 一般的胜负博弈游戏来说,有以下几点:(注意必胜必败是针对这回合操作的人) 所有终结状态为必败点(比如五子棋 ...

最新文章

  1. linux 命令窗口美化,美化你的命令行终端Terminal
  2. 刻意练习:Python基础 -- Task05. 函数与Lambda表达式
  3. fusion 360安装程序的多个实例正在同时运行。_SpringMVC运行原理
  4. 记录一次读取hdfs文件时出现的问题java.net.ConnectException: Connection refused
  5. Microsfot.Web.UI.WebControls.TreeView JavaScript控制方法研究(转)
  6. antd 函数组件_React - 组件:函数组件
  7. QSettings allKeys读取为空分析
  8. php mysql 字段备注_MySQL下读取 表/字段 的说明备注信息
  9. C++文件打开模式详解
  10. php语言指针的初始化定义,指针变量的初始化,C语言指针变量初始化详解
  11. python树的实现
  12. VUE使用lodop实现前端打印页面指定内容
  13. python之路_数据备份及pymysql模块
  14. 暑假集训-7.31总结
  15. java优化技巧_Java 性能优化的五大技巧
  16. 企业网站管理系统php源码,云优CMS企业网站管理系统
  17. 如何关闭445端口 两种方式教你关闭445端口
  18. AutoCAD中导入图片
  19. 【实习日报】2019年4月上半月 前端开发实习工作日报汇总
  20. Ubuntu16.04 n次装机血泪史(pixel2mesh)

热门文章

  1. softice 常用操作
  2. 51单片机学习案例——自学使用
  3. windows通过bat运行指定位置程序及设置开机自启
  4. 电子商务的未来谁主宰?
  5. 台式计算机如何联络无线网,台式电脑怎样设置无线网络
  6. ddos源码 ntp_了解NTP DDOS攻击原理
  7. python pppoe拨号_linux文本模式下使用PPPOE拨号ADSL上网的方法
  8. 【最强实习生】20场Android面试斩获大厂offer,来看看我都会些什么
  9. linux下raid0创建教程,Linux 常见 RAID 及软 RAID 创建
  10. Mac删除Python缓存文件