有一堆石子共有N个。A B两个人轮流拿,A先拿。每次最少拿1颗,最多拿K颗,拿到最后1颗石子的人获胜。假设A B都非常聪明,拿石子的过程中不会出现失误。给出N和K,问最后谁能赢得比赛。

题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1066

必胜策略:令 n = (k + 1) * r + s ; A第一次取s个,让B面对k+1倍数的局面,如果B取m个则A取k+1 - m个。

#include <cstdio>
#include <cstring>
using namespace std;int main()
{int t;scanf("%d", &t);while( t-- ){int n, k;scanf("%d%d", &n, &k);if( n <= k )printf("A\n");else{int tmp = n % (k + 1);if( tmp == 0 )printf("B\n");elseprintf("A\n");}}return 0;
}

有一堆石子共有N个。A B两个人轮流拿,A先拿。每次只能拿1,3,4颗,拿到最后1颗石子的人获胜。假设A B都非常聪明,拿石子的过程中不会出现失误。给出N,问最后谁能赢得比赛。

题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1067

分析:连续找一些书测试,可以发现当 n % 7 == 0 || == 2 时B胜,其余情况A胜

#include <cstdio>
using namespace std;int main()
{int t, n;scanf("%d", &t);while( t-- ){scanf("%d", &n);int tmp = n % 7;if( tmp == 0 || tmp == 2 )printf("B\n");elseprintf("A\n");}return 0;
}

有N堆石子。A B两个人轮流拿,A先拿。每次只能从一堆中取若干个,可将一堆全取走,但不可不取,拿到最后1颗石子的人获胜。假设A B都非常聪明,拿石子的过程中不会出现失误。给出N及每堆石子的数量,问最后谁能赢得比赛。

例如:3堆石子,每堆1颗。A拿1颗,B拿1颗,此时还剩1堆,所以A可以拿到最后1颗石子。

题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1069

分析:尼姆博弈,对于一个Nim游戏的局面(a1,a2,...,an),它是P-position当且仅当a1^a2^...^an=0,其中^表示异或(xor)运算.

#include <cstdio>
using namespace std;int main()
{int n;while( ~scanf("%d", &n) ){int ans = 0;int num;for( int i=0; i<n; i++ ){scanf("%d", &num);if( i == 0 )ans = num;elseans ^= num;}if( ans != 0 )printf("A\n");elseprintf("B\n");}return 0;
}

有2堆石子。A B两个人轮流拿,A先拿。每次可以从一堆中取任意个或从2堆中取相同数量的石子,但不可不取。拿到最后1颗石子的人获胜。假设A B都非常聪明,拿石子的过程中不会出现失误。给出2堆石子的数量,问最后谁能赢得比赛。

例如:2堆石子分别为3颗和5颗。那么不论A怎样拿,B都有对应的方法拿到最后1颗。

题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1072

分析:威佐夫博弈

两个人如果都采用正确操作,那么面对非奇异局势,先拿者必胜;反之,则后拿者取胜. 局势(N,M)(N<M)满足

N==(int)((1.0+sqrt(5.0))/2.0*(M-N))时,该局势为奇异局势,后拿者必胜.

#include <cstdio>
#include <algorithm>
#include <cmath>
using namespace std;int main()
{int t;scanf("%d", &t);while( t-- ){int a, b;    // n mscanf("%d%d", &a, &b);if( a > b )swap(a, b);int tmp = (int) ((1.0 + sqrt(5.0)) / 2.0 * (b - a));    // 奇异局势if( a == tmp )printf("B\n");elseprintf("A\n");}return 0;
}

博弈论(取石子专题)相关推荐

  1. bzoj3895: 取石子(博弈论,记忆化搜索)

    3895: 取石子 Time Limit: 1 Sec  Memory Limit: 512 MB Submit: 361  Solved: 177 [Submit][Status][Discuss] ...

  2. POJ1067 取石子游戏 跪跪跪,很好的博弈论

    取石子游戏 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 29951   Accepted: 9814 Descriptio ...

  3. 【一本通】1218:取石子游戏(博弈论)

    题目描述: 有两堆石子,两个人轮流去取.每次取的时候,只能从较多的那堆石子里取,并且取的数目必须是较少的那堆石子数目的整数倍,最后谁能够把一堆石子取空谁就算赢. 比如初始的时候两堆石子的数目是25和7 ...

  4. 【POJ】1067 取石子游戏(博弈论)

    Description 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子:二是可以在两堆中同时取走相同数量的石子.最后 ...

  5. 博弈论——1218:取石子游戏

    1218:取石子游戏时间限制: 1000 ms 内存限制: 65536 KB 提交数: 10430 通过数: 4939 [题目描述] 有两堆石子,两个人轮流去取.每次取的时候,只能从较多的那堆石子里取 ...

  6. 取石子游戏,程序员用博弈论教你如何必胜

    1.游戏规则 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子(至少取1个). 每次有两种不同的取法,规则如下: 1.一是可以在任意的一堆中取走任意多的石子:2.二是可以在两堆中同时取走相同 ...

  7. 博弈论之取石子游戏的学习

    以下内容来自转载: 博弈问题简介 所讨论的博弈问题满足以下条件: 玩家只有两个人,轮流做出决策 游戏的状态集有限,保证游戏在有限步后结束,这样必然会产生不能操作者,其输 对任何一种局面,胜负只决定于局 ...

  8. 博弈论——《取石子》《取石子游戏》

    传送门:活动 - AcWing 思路: 结论:在所有堆的石子个数>1的情况下 只要石子数+石子堆数-1==b是奇数,那么先手必胜.b是不计算所有个数为1的石子堆得出的. b是奇数的情况下一定存在 ...

  9. NYOJ 23 取石子(一)

    取石子(一) 时间限制:3000 ms  |  内存限制:65535 KB 难度:2 描述 一天,TT在寝室闲着无聊,和同寝的人玩起了取石子游戏,而由于条件有限,他/她们是用旺仔小馒头当作石子.游戏的 ...

  10. POJ-1067取石子游戏,威佐夫博弈范例题/NYOJ-161,主要在于这个黄金公式~~

    取石子游戏 Time Limit: 1000MS   Memory Limit: 10000K              Description 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取 ...

最新文章

  1. Docker 入门系列(1)- 初识容器,镜像、容器、仓库的区别
  2. Neuron 2020 | 深度强化学习和神经科学
  3. python3生成avi文件
  4. qsort函数应用大全
  5. uwsgi: error while loading shared libraries: libicui18n.so.58: cannot open shared object file
  6. jQuery 源码分析笔记(3)
  7. [ICPC 北京 2017 J题]HihoCoder 1636 Pangu and Stones
  8. 反射机制 Class.getDeclaredMethod
  9. gcc(g++)头文件搜索路径与库文件搜索路径(转载)
  10. php 当前时间 当前时间戳和数据库里取出的时间datetime格式进行比较大小
  11. 10月18号、19号、20号三天PC端云音乐项目总结
  12. AIC和BIC准则详解
  13. html2d缩放代码,HTML5之SVG 2D入门1—SVG(可缩放矢量图形)概述
  14. LayUi 之 模板引擎
  15. SDN控制平面(五)
  16. 百度搜索研究,详解一个页面的索引价值!
  17. 推挽输出、漏极输出方式详解
  18. 软件开发工程师最重要的4项技能
  19. xp系统简单tcpip服务器,xp系统没有tcpip协议怎么办,xp安装tcpip协议的方法
  20. 很有意思的思维方式:直线思维和曲线思维

热门文章

  1. 传智播客java测试题_传智播客java笔试题
  2. Linux i2c-tools使用及调试
  3. oracle 11g数据库安装教程
  4. 只要学会这个PDF压缩方法,压缩PDF不再是难题
  5. 3D数学基础:矩阵的几何解释
  6. 捷联惯导姿态解算基础
  7. 微机实验报告2 显示程序实验
  8. android+gps+定位+缓存,Android GPS和Network定位
  9. ECharts地图,echarts自定义map地图,echarts添加标注,自定义坐标、图标、icon
  10. Spark开发入门与实践(一)