POJ 3537.Crosses and Crosses(定义sg函数)
传送门
题意
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函数)相关推荐
- (转载)--SG函数和SG定理【详解】
在介绍SG函数和SG定理之前我们先介绍介绍必胜点与必败点吧. 必胜点和必败点的概念: P点:必败点,换而言之,就是谁处于此位置,则在双方操作正确的情况下必败. N点:必胜点,处于此情况下,双方操作均正 ...
- SG函数和SG定理【详解】
在介绍SG函数和SG定理之前我们先介绍介绍必胜点与必败点吧. 必胜点和必败点的概念: P点:必败点,换而言之,就是谁处于此位置,则在双方操作正确的情况下必败. N点:必胜点,处于此情况下,双方操作均正 ...
- poj 3537 Crosses and Crosses 博弈论之grundy值
题意: 给1*n的格子,轮流在上面叉叉,最先画得3个连续叉叉的赢.问先手必胜还是必败. 分析: 求状态的grundy值(也就是sg值),详细怎么求详见代码.为什么这么求要自己想的,仅仅可意会(别人都说 ...
- *【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 ...
- POJ 2425 A Chess Game(有向图SG函数)题解
题意:给一个有向图,然后个m颗石头放在图上的几个点上,每次只能移动一步,如果不能移动者败 思路:dfs打表sg函数,然后求异或和 代码: #include<queue> #include& ...
- SG函数和SG定理(Sprague_Grundy)
一.必胜点和必败点的概念 P点:必败点,换而言之,就是谁处于此位置,则在双方操作正确的情况下必败. N点:必胜点,处于此情况下,双方操作均正确的情况下必胜. 必胜点和必败点的性质: ...
- 组合博弈游戏 - SG函数和SG定理
转载来自:http://blog.csdn.net/luomingjun12315/article/details/45555495 在介绍SG函数和SG定理之前我们先介绍介绍必胜点与必败点吧. 必胜 ...
- 组合游戏 - SG函数和SG定理
在介绍SG函数和SG定理之前我们先介绍介绍必胜点与必败点吧. 必胜点和必败点的概念: P点:必败点,换而言之,就是谁处于此位置,则在双方操作正确的情况下必败. N点:必胜点,处于此情况下,双方操作均正 ...
- 【博弈论】博弈论入门笔记(四类基础博弈+SG函数)
『博弈论定义』 博弈论又被称为对策论(Game Theory):是二人或多人在平等的对局中各自利用对方的策略变换自己的对抗策略,达到取胜目标的理论.博弈论是研究互动决策的理论.博弈可以分析自己与对手的 ...
- 博弈论与sg函数入门
记录一点结论性的东西,推导见百度吧. 首先博弈的前提是双方"绝对理智". 一般的胜负博弈游戏来说,有以下几点:(注意必胜必败是针对这回合操作的人) 所有终结状态为必败点(比如五子棋 ...
最新文章
- linux 命令窗口美化,美化你的命令行终端Terminal
- 刻意练习:Python基础 -- Task05. 函数与Lambda表达式
- fusion 360安装程序的多个实例正在同时运行。_SpringMVC运行原理
- 记录一次读取hdfs文件时出现的问题java.net.ConnectException: Connection refused
- Microsfot.Web.UI.WebControls.TreeView JavaScript控制方法研究(转)
- antd 函数组件_React - 组件:函数组件
- QSettings allKeys读取为空分析
- php mysql 字段备注_MySQL下读取 表/字段 的说明备注信息
- C++文件打开模式详解
- php语言指针的初始化定义,指针变量的初始化,C语言指针变量初始化详解
- python树的实现
- VUE使用lodop实现前端打印页面指定内容
- python之路_数据备份及pymysql模块
- 暑假集训-7.31总结
- java优化技巧_Java 性能优化的五大技巧
- 企业网站管理系统php源码,云优CMS企业网站管理系统
- 如何关闭445端口 两种方式教你关闭445端口
- AutoCAD中导入图片
- 【实习日报】2019年4月上半月 前端开发实习工作日报汇总
- Ubuntu16.04 n次装机血泪史(pixel2mesh)