SG函数模板

源于http://www.cnblogs.com/frog112111/p/3199780.html

首先定义mex(minimal excludant)运算,这是施加于一个集合的运算,表示最小的不属于这个集合的非负整数。例如mex{0,1,2,4}=3、mex{2,3,5}=0、mex{}=0。

对于一个给定的有向无环图,定义关于图的每个顶点的Sprague-Grundy函数g如下:g(x)=mex{ g(y) | y是x的后继 },这里的g(x)即sg[x]

例如:取石子问题,有1堆n个的石子,每次只能取{1,3,4}个石子,先取完石子者胜利,那么各个数的SG值为多少?

sg[0]=0,f[]={1,3,4},

x=1时,可以取走1-f{1}个石子,剩余{0}个,mex{sg[0]}={0},故sg[1]=1;
x=2时,可以取走2-f{1}个石子,剩余{1}个,mex{sg[1]}={1},故sg[2]=0;
x=3时,可以取走3-f{1,3}个石子,剩余{2,0}个,mex{sg[2],sg[0]}={0,0},故sg[3]=1;
x=4时,可以取走4-f{1,3,4}个石子,剩余{3,1,0}个,mex{sg[3],sg[1],sg[0]}={1,1,0},故sg[4]=2;
x=5时,可以取走5-f{1,3,4}个石子,剩余{4,2,1}个,mex{sg[4],sg[2],sg[1]}={2,0,1},故sg[5]=3;
以此类推.....

x         0  1  2  3  4  5  6  7  8....
sg[x]      0  1  0  1  2  3  2  0  1....

计算从1-n范围内的SG值。
f(存储可以走的步数,f[0]表示可以有多少种走法)
f[]需要从小到大排序

1.可选步数为1~m的连续整数,直接取模即可,SG(x) = x % (m+1);
2.可选步数为任意步,SG(x) = x;
3.可选步数为一系列不连续的数,用GetSG()计算

模板1如下(SG打表):

//f[]:可以取走的石子个数
//sg[]:0~n的SG函数值
//hash[

【博弈】SG函数模板 nyoj913取石子(十)相关推荐

  1. 南昌大学航天杯第二届程序设计竞赛校赛网络同步赛B 取石子(博弈SG函数模板)

    题目链接:取石子 链接:https://www.nowcoder.com/acm/contest/122/B 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65 ...

  2. 数学基础(四)博弈论(巴什博弈~威佐夫博弈(黄金分割率)~尼姆博奕~斐波那契博弈~SG函数模板)

    一.巴什博弈 1.问题模型 只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个,最后取光者得胜. 2.解决思路: 当n=m+1时,由于一次最多只能取m个,所以无论先取者拿走多 ...

  3. HDU-1848--博弈SG函数模板题

    这篇文章写的很好,值得转发. 首先定义mex(minimal excludant)运算,这是施加于一个集合的运算,表示最小的不属于这个集合的非负整数. 例如mex{0,1,2,4}=3.mex{2,3 ...

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

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

  5. HDU 1846-Brave Game(巴什博弈-SG函数)

    Brave Game Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  6. (转)博弈 SG函数

    此文为以下博客做的摘要: https://blog.csdn.net/strangedbly/article/details/51137432 ---------------------------- ...

  7. NIM博弈+SG函数求解

    ICG 给定一个有向无环图和一个起始顶点上的一枚棋子,两名选手交替的将这枚棋子沿有向边进行移动,无法移动者判负. 这个游戏可以认为是所有 Impartial Combinatorial Games 的 ...

  8. hdu2897邂逅明下——博弈sg函数的应用

    邂逅明下 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  9. CodeForces - 850C Arpa and a game with Mojtaba(博弈+sg函数)

    题目链接:点击查看 题目大意:给出n个数,两个人轮流按照规则操作,不能操作的人即为失败,规则很简单,每次找一个质数p的k次幂,记做x=,将数组中所有包含x倍数的数都除以x,必须保证至少有一个数可以除以 ...

最新文章

  1. [翻译] DSL和模型驱动开发的最佳实践(3/4)
  2. 添加Page_Init事件
  3. 挨踢人生路--记我的10年18家工作经历 - 第16家公司,英国公司――第一次当经理...
  4. SAP调用外部web service
  5. c语言链表实现数组逆置,数组与链表等顺序表逆置
  6. 相关和因果是一回事吗?R值低就是不相关?终于有人讲明白了
  7. Python学习笔记之变量
  8. 不花钱的pdf编辑器_真香!免费pdf处理工具,等你来拿。工作又轻松了一步
  9. 查询与删除MSSQL中所有外键约束
  10. 快手技术嘉年华喊你来参加啦!
  11. easyPOI 模板导出Excel
  12. 计算机启动硬盘响,电脑开机时硬盘响个不停的原因及解决方法
  13. 常见ERP软件简单介绍与个人评价
  14. Linux下根据关键字搜索最后一条日志
  15. scp 保留文件属组_SCP命令用法详解-hdparm工具参数详解-改变文件组命令chgrp和改变文件属主命令chown_169IT.COM...
  16. 非线性方程组求解方法,神经网络的非线性函数
  17. 【ASE入门学习】ASE入门系列——序章
  18. flex+php ria应用开发实战详解光盘,《Flex+PHPRIA应用开发实战详解-梁文新版》学习日记2...
  19. C语言系统程序总体框图,c语言学生成绩管理系统(含源代码)精要.doc
  20. 一文搞懂 php 中的 DI 依赖注入

热门文章

  1. C语言-循环结构程序
  2. c语言wchar转化为char_linux 下 wchar_t和char的相互转化
  3. 学习 PixiJS — 交互工具 1
  4. 南京青奥会志愿者标识物揭晓 4条志愿彩最抢眼
  5. 开讲啦观后感2017计算机科学家,【开讲啦观后感2017】2017开讲啦观后感400字_2017开讲啦观后感500字_亲亲宝贝网...
  6. idea中使用maven以后出现了程序包不存在的问题
  7. 今日!云洲智造直播间开讲啦
  8. 小米手机安装charles 证书提示 无法安装证书 no certifites to install
  9. stata代码笔记,随时更新
  10. json在线解析与格式化