清空/分割游戏也叫做Ferguson博弈。


进行游戏需要用到两个盒子,在游戏的开始,第一个盒子中有n枚石子,第二个盒子中有m个石子(n, m > 0)。参与游戏的

两名玩家轮流执行这样的操作:清空一个盒子中的石子,然后从另一个盒子中拿若干石子到被清空的盒子中,使得最后两个

盒子都不空。当两个盒子中都只有一枚石子时,游戏结束。最后成功执行操作的玩家获胜。找出游戏中所有的P位置。


结论:对于一个位置(x, y)来说,如果x, y中有一个偶数,那么(x, y)是N(必胜)位置。如果x和y都是奇数,那么

(x, y)是P位置(必败),可以用数学归纳法证明。


证明:

证明结论:(x,y)至少一偶时,先手胜;都为奇时,先手败

证明:

(x,y)=(1,1)时是先手必败态,下对max(x,y)>1进行归纳

1、当max(x,y)=2时,即(x,y)=(1,2)或(2,1)或(2,2),先手留下一个2分为(1,1),先手获胜。

即当max(x,y)=2时结论成立。


2、假设max(x,y)<k时结论都成立,现证max(x,y)=k时结论成立。

若(x,y)中有一个偶数(设为a),先手将另一个清空,把偶数a分为两个奇数b和c,由于b、c<a 小于等于 k,即

max(b,c)<k,由假设,在(b,c)位置上后手作为新先手必败,故先手胜。

若(x,y)都为奇数,先手只能保留一个奇数并将其分解为一奇a一偶b,由于max(a,b)<max(x,y)=k,由假设,在(a,b)位

置上后手作为新先手必胜,故先手败。


经典题目:http://acm.hdu.edu.cn/showproblem.php?pid=2147



题目:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3714


题意:本题与清空/分割游戏不同的是,每次清空球较少的那个盒子,而清空/分割游戏是清空任意一个盒子,不管球的个数多少,其它条

件都相同。


分析:本题就是找规律,可以发现就是判断n+1是否是2的整数次幂,那么用(n & ( n + 1 )) == 0来判断就行了。


暴力程序:


#include <iostream>
#include <string.h>
#include <stdio.h>using namespace std;
const int N = 105;bool dp[N][N];
bool vis[N][N];bool dfs(int n,int m)
{if(n == 1 && m == 1) return 0;if(vis[n][m]) return dp[n][m];for(int i=1; i<=n/2; i++){dp[n-i][i] = dfs(n-i,i);vis[n-i][i] = 1;}for(int i=1; i<=n/2; i++)if(!dp[n-i][i]) return 1;return 0;
}int main()
{memset(dp,0,sizeof(dp));memset(vis,0,sizeof(vis));for(int i=1;i<65;i++)cout<<dfs(i,1)<<" ";cout<<endl;return 0;
}

结论:如果(n & (n + 1)) == 0,那么先手败,否则先手胜。


#include <iostream>
#include <string.h>
#include <stdio.h>using namespace std;int main()
{int n;while(cin>>n){if(n == 0) break;if((n & (n + 1)) == 0) puts("Bob");else puts("Alice");}return 0;
}

Ferguson博弈相关推荐

  1. ferguson博弈_组合博弈游戏

    ² 组合博弈游戏的概念和特点 ² 组合博弈游戏应满足以下性质: ² 1. 有两个游戏者. ² 2. 有一个可能的游戏状态集.这个状态集通常是有限的. ² 3. 游戏规则指定了在任何状态下双方的可能的走 ...

  2. ferguson博弈_人物介绍!扑克界传奇人物“耶稣”Chris Ferguson

    原标题:人物介绍!扑克界传奇人物"耶稣"Chris Ferguson Chris Ferguson是世界扑克界当之无愧的传奇人物.他之所以被人们冠以"耶稣"的称 ...

  3. surreal number应对不平等博弈

    转载自:http://www.matrix67.com/blog/archives/6333 Surreal Number求解一些不平等博弈游戏,该数学理念可以在高德纳数学科幻小说Surreal Nu ...

  4. (转)博弈问题与SG函数

    博弈问题 若你想仔细学习博弈论,我强烈推荐加利福尼亚大学的Thomas S. Ferguson教授精心撰写并免费提供的这份教材,它使我受益太多.(如果你的英文水平不足以阅读它,我只能说,恐怕你还没到需 ...

  5. 博弈问题及SG函数(真的很经典)

    博弈问题 若你想仔细学习博弈论,我强烈推荐加利福尼亚大学的Thomas S. Ferguson教授精心撰写并免费提供的这份教材,它使我受益太多.(如果你的英文水平不足以阅读它,我只能说,恐怕你还没到需 ...

  6. ACM常见组合博弈游戏

    这两天认识了几个组合游戏的基础模型,希望自己能更新下去.. Ferguson游戏 Description Initial 有两个盒子,一个装有 m 颗糖,一个装有 n 颗糖,表示为 (m, n) . ...

  7. 【博弈】 各种博弈的搬运整理

    这两天认识了几个组合游戏的基础模型,希望自己能更新下去.. Ferguson游戏 Description Initial 有两个盒子,一个装有 m 颗糖,一个装有 n 颗糖,表示为 (m, n) . ...

  8. Game Theory: 公平博弈

    Notes: The following excerpt is from a book <GAME THEORY>by Thomas && S.Ferguson and a ...

  9. 博弈问题及SG函数(怒赞,耐心地仔细看一定能看懂)

    博弈问题 若你想仔细学习博弈论,我强烈推荐加利福尼亚大学的Thomas S. Ferguson教授精心撰写并免费提供的这份教材,它使我受益太多.(如果你的英文水平不足以阅读它,我只能说,恐怕你还没到需 ...

最新文章

  1. 前戴尔EMC中国研究院院长创业:推出AI加速虚拟化平台,开发者可免费使用
  2. Python3.2 --- Print函数用法
  3. STM32的FSMC详解
  4. XMemcached使用示例--转
  5. 链表的建立,搜索,插入,反转,销毁以及合并有序链表。
  6. GDB 调试多进程或者多线程应用
  7. 嵌入式实训-day1
  8. Facebook Graph API(2)--读取数据之picture
  9. 苹果系统安装python环境_Mac下安装Python虚拟环境Virtualenv
  10. 借助易宝实现Java版网上在线支付
  11. Vue + Refresh Token
  12. Variation calling and annotation
  13. excel表格打印每页都有表头_教你一招Excel打印技巧:每页有表头标题,阅读起来是真方便...
  14. 数据库学习——10-13-聚合函数+GROUP BY+HAVING学习
  15. bigworld源码分析(1)—— 研究bigworld的意义和目标
  16. __参加华为新员工培训有感
  17. 渐变的alert_模仿新浪邮箱的alert渐变的提示框
  18. HighlightBuilder高亮显示
  19. Kali 下对安卓手机的攻击
  20. PPT技能速成班学习笔记

热门文章

  1. 字符流复制Java文件改进版
  2. weblogic 扫描不到jar包的类问题解决方案
  3. SpringAOP概念
  4. Android端发送字符到Wed端,Android面试-socket和websocket
  5. Java 中的线程安全的类
  6. 笔试编程常用函数(Java)
  7. 【报错笔记】在eclipse中做Spring项目时,创建Spring容器时老是出错
  8. Windows下Oracle的下载与安装
  9. 2018/5/12日更新Win7x86x64纯净安装旗舰版WIM下载(启用内置管理员).....
  10. redis 数据结构