P/N理论

分析博弈时可以用P/N分析法

具体如下:

P点:即必败点,某玩家位于此点,只要对方无失误,则必败;

N点:即必胜点,某玩家位于此点,只要自己无失误,则必胜。

必败态:一定输

必胜态:一定赢

奇异局势:必败态局势

非奇异局势:必胜态局势

P/N点满足三个定理:

  1. 所有终结点都是必败点P(游戏中,轮到谁拿牌,还剩0张牌的时候,此人就输了,因为无牌可取)(游戏规则特殊的不考虑);
  2. 所有一步能走到必败点P的就是N点;
  3. 通过一步操作只能到N点的就是P点;

如最简单的巴什博弈中的取石子问题,假设每个人最多取3个,共9个:

0为必败点P,1,2,3可以通过取1,2,3个得到0这个必败点,于是1,2,3是N必胜点,而4不可以通过取1,2,3得到必败点,所以4是新的必败点。

以此类推,可以列一张0到8的表(这可以帮我们理解)

0 1 2 3 4 5 6 7 8 9
P N N N P N N N P N

我们一开始拿1个,让对手进入必败态(奇异局势),就可以赢。

但具体题目中,我们用8 % (3 + 1) != 0

理论补充:对于奇异局势你一定能把它变成非奇异局势,一定不能把它变成奇异局势(不然你就一直赢了);

对于非奇异局势,你可以通过才智把它变成奇异局势,也能变成非奇异局势

看题目吧,少年!

基础博弈变形

假设有13个石子,双方可以取1,3,4个,你先取,问怎样才能稳赢?

我们可以先列一张表

0 1 2 3 4 5 6 7 8 9 10 11 12 13
P N P N N N N P N P N N N N

从表中可以看出,你要先取4个,让对手达到必败态 。

要判断是否是奇异局势也很简单:13%(2+(4+1))!=0或13%(2+(4+1))!=2即可

水几题吧!!!

先自己做做吧。(我就不做超链接了)

hdu1847

hdu2188

hdu3863


hdu1847

哈哈,分析后,3的倍数为必败-。-

#include<stdio.h>
int main()
{
int n;
while(scanf("%d", &n)==1)
{
if (n % 3 == 0)
printf("Cici\n");
else
printf("Kiki\n");
}
return 0;
}

hdu2188

水水水。。。

#include<stdio.h>
int main()
{
int n,a,b;
while (scanf("%d", &n) ==1)
{
while (n--)
{
scanf("%d%d", &a, &b);
if (a > b&&a%(b+1)==0)
printf("Rabbit\n");
else
printf("Grass\n");
}
}
return 0;
}

hdu3863

先手必胜

#include<stdio.h>
int main()
{
long int n;
while (scanf("%ld", &n) ==1&&n!=-1)
{
printf("I bet on Oregon Maple~\n");
}
return 0;
}

acm--博弈入门2(P/N分析)--(HDU 1847 HDU 2188 HDU 3863)的更多相关文章

  1. 【转】ACM博弈知识汇总

    博弈知识汇总 转自:http://www.cnblogs.com/kuangbin/archive/2011/08/28/2156426.html 有一种很有意思的游戏,就是有物体若干堆,可以是火柴棍 ...

  2. ACM博弈知识汇总(转)

    博弈知识汇总 有一种很有意思的游戏,就是有物体若干堆,可以是火柴棍或是围棋子等等均可.两个人轮流从堆中取物体若干,规定最后取光物体者取胜.这是我国民间很古老的一个游戏,别看这游戏极其简单,却蕴含着深刻 ...

  3. HDU.1847 Good Luck in CET-4 Everybody! ( 博弈论 SG分析)

    HDU.1847 Good Luck in CET-4 Everybody! ( 博弈论 SG分析) 题意分析 简单的SG分析 题意分析 简单的nim 博弈 博弈论快速入门 代码总览 //#inclu ...

  4. hdu 1847 Good Luck in CET-4 Everybody!(巴什博弈)

    Good Luck in CET-4 Everybody! HDU - 1847 大学英语四级考试就要来临了,你是不是在紧张的复习?也许紧张得连短学期的ACM都没工夫练习了,反正我知道的Kiki和Ci ...

  5. HDU 1847 Good Luck in CET-4 Everybody! (巴什博弈)

    题目链接:HDU 1847 Problem Description 大学英语四级考试就要来临了,你是不是在紧张的复习?也许紧张得连短学期的ACM都没工夫练习了,反正我知道的Kiki和Cici都是如此. ...

  6. HDU 1847 Good Luck in CET-4 Everybody!(规律,博弈)

    Good Luck in CET-4 Everybody! Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ...

  7. HDU 1847 Good Luck in CET-4 Everybody! (博弈)

    题意:不用说了吧,都是中文的. 析:虽说这是一个博弈的题,但是也很简单的,在说这个题目前我们先说一下巴什博弈定理. 巴什博弈定理:一堆物品有n个,有两个人(两个人足够聪明)轮流取,规定每次至少取一个, ...

  8. HDOJ 1846 Brave Game - 博弈入门

    题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1846 经典基础博弈,首先面对(m+1)的人一定会输,依次往后推即可: #include<iost ...

  9. ACM 博弈(难)题练习 (第一弹)

    第二弹: 套路&&经验总结: 1. N堆***的游戏,一般可以打表找SG函数的规律.比如CodeForces 603C 2.看起来是单轮的游戏,实际上可能拆分成一些独立的子游戏.比如C ...

随机推荐

  1. 论文阅读笔记六:FCN:Fully Convolutional Networks for Semantic Segmentation(CVPR2015)

    今天来看一看一个比较经典的语义分割网络,那就是FCN,全称如题,原英文论文网址:https://people.eecs.berkeley.edu/~jonlong/long_shelhamer_fcn ...

  2. idea首次创建新模块的详细操作

    依赖网址:https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api/3.1.0 https://mvnrepository. ...

  3. Python语音识别(计算器)

    第一步关于导入模块的事,我试了好几个方法才发现在好像win7系统没有语音识别功能,我用了win10的又需要重新下载一个包 这样子,win32com.client模块就可以使用了 import win3 ...

  4. 目标检测中的mAP

    一.IOU的概念 交集和并集的比例(所谓的交集和并集,都是预测框和实际框的集合关系).如图: 二.Precision(准确率)和Recall(召回率)的概念 对于二分类问题,可将样例根据其真实类别和预 ...

  5. caffe调loss方法

    正文 what should I do if... ...my loss diverges? (increases by order of magnitude, goes to inf. or NaN ...

  6. Linux发布WebApi

    一:WebApi 使用Owin来做  http://www.cnblogs.com/xiaoyaodijun/category/666029.html 二:安装最新版的Jexus服务 https:// ...

  7. [转] Async/Await替代Promise的6个理由

    Node.js 7.6已经支持async/await了,如果你还没有试过,这篇博客将告诉你为什么要用它. Async/Await简介 对于从未听说过async/await的朋友,下面是简介: asyn ...

  8. BETA准备

    过去存在的问题 文档问题 未能事先做好设计文档,且小程序与后端数据库接口存在问题 界面问题 原型图设计花的时间较少,小程序设计界面仍相对粗糙,前端成员css元素应用经验不足 小程序界面之间对接存在问题 ...

  9. 【Android】GestureDetector类及其用法

    当用户触摸屏幕的时候,会产生许多手势,例如down,up,scroll,filing等等. 一般情况下,我们知道View类有个View.OnTouchListener内部接口,通过重写他的onTouc ...

  10. Python的_文件操作

    打开文件:file_obj=open("文件路径","模式",“编码”’) 其中模式有: r,以只读方式打开文件(默认) w,打开一个文件只用于写入(不存在则创 ...