acm--博弈入门2(P/N分析)--(HDU 1847 HDU 2188 HDU 3863)
P/N理论
分析博弈时可以用P/N分析法
具体如下:
P点:即必败点,某玩家位于此点,只要对方无失误,则必败;
N点:即必胜点,某玩家位于此点,只要自己无失误,则必胜。
必败态:一定输
必胜态:一定赢
奇异局势:必败态局势
非奇异局势:必胜态局势
P/N点满足三个定理:
- 所有终结点都是必败点P(游戏中,轮到谁拿牌,还剩0张牌的时候,此人就输了,因为无牌可取)(游戏规则特殊的不考虑);
- 所有一步能走到必败点P的就是N点;
- 通过一步操作只能到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)的更多相关文章
- 【转】ACM博弈知识汇总
博弈知识汇总 转自:http://www.cnblogs.com/kuangbin/archive/2011/08/28/2156426.html 有一种很有意思的游戏,就是有物体若干堆,可以是火柴棍 ...
- ACM博弈知识汇总(转)
博弈知识汇总 有一种很有意思的游戏,就是有物体若干堆,可以是火柴棍或是围棋子等等均可.两个人轮流从堆中取物体若干,规定最后取光物体者取胜.这是我国民间很古老的一个游戏,别看这游戏极其简单,却蕴含着深刻 ...
- HDU.1847 Good Luck in CET-4 Everybody! ( 博弈论 SG分析)
HDU.1847 Good Luck in CET-4 Everybody! ( 博弈论 SG分析) 题意分析 简单的SG分析 题意分析 简单的nim 博弈 博弈论快速入门 代码总览 //#inclu ...
- hdu 1847 Good Luck in CET-4 Everybody!(巴什博弈)
Good Luck in CET-4 Everybody! HDU - 1847 大学英语四级考试就要来临了,你是不是在紧张的复习?也许紧张得连短学期的ACM都没工夫练习了,反正我知道的Kiki和Ci ...
- HDU 1847 Good Luck in CET-4 Everybody! (巴什博弈)
题目链接:HDU 1847 Problem Description 大学英语四级考试就要来临了,你是不是在紧张的复习?也许紧张得连短学期的ACM都没工夫练习了,反正我知道的Kiki和Cici都是如此. ...
- 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 ...
- HDU 1847 Good Luck in CET-4 Everybody! (博弈)
题意:不用说了吧,都是中文的. 析:虽说这是一个博弈的题,但是也很简单的,在说这个题目前我们先说一下巴什博弈定理. 巴什博弈定理:一堆物品有n个,有两个人(两个人足够聪明)轮流取,规定每次至少取一个, ...
- HDOJ 1846 Brave Game - 博弈入门
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1846 经典基础博弈,首先面对(m+1)的人一定会输,依次往后推即可: #include<iost ...
- ACM 博弈(难)题练习 (第一弹)
第二弹: 套路&&经验总结: 1. N堆***的游戏,一般可以打表找SG函数的规律.比如CodeForces 603C 2.看起来是单轮的游戏,实际上可能拆分成一些独立的子游戏.比如C ...
随机推荐
- 微信如何获取unionid 并且打通微信公众号和小程序
准备 1.微信公众号 2.微信小程序 3.微信开发平台帐号 没有在开发平台绑定的小程序和公众号是没法获取unionid的 只需要在开发平台绑定小程序和公众号,便可以获取unionid 其中对于小程序和 ...
- gitlab原理
GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务. 其实,说直白点写,他就是个git服务器,和github差不多,只不过,这个gitlab可 ...
- javascript 面向对象-面试题实例
/ 从设计到模式 // 设计模式简介 // 设计 // 模式 // 分开 // 从设计到模式 // 23种设计模式 // 创建型 // 工厂模式(工厂方法模式,抽象工厂模式,建造者模式) // 单例模 ...
- 【Maven】Select Dependency 无法检索
问题: 在 “pom.xml” 中,点击 “Dependencies” -> “Add” 添加依赖时,无法检索. 如下图所示: 解决办法: 依次点击 “Windows”->“Show ...
- Adjoint operators $T_K$ and $T_{K^{*}}$ in BEM
In our last article, we introduced four integral operators in the boundary integral equations in BEM ...
- 在grails中远程调用action
在进行类似批处理的程序时,如果在一个action中需要保存很多记录数,这会导致grails中的数据库session超过负荷,从而导致OOM. 因为这个情况的发生是由于在一次请求中,对数据进行的修改都保 ...
- spring ,springmvc,mybatis 最基本的整合,没有多余的jar包和依赖 2018.9.29日
最基本的ssm框架整合 本案例采用2018商业版intellij idea 编辑器 maven项目管理工具 tomcat8.5 接着上一篇使用springmvc最基本配置开始 https: ...
- ajax请求后台,response.sendRedirect失效,无法重定向
今天在写项目的时候,想加一个切换用户,需要清除session并且跳转到登录页面,发起一个ajax请求后,执行完发现无法跳转. 原因在于: (从网上摘录) Ajax只是利用脚本访问对应url获取数据而已 ...
- day32 process模块用法
昨日作业: 服务端: 服务端: from socket import * from multiprocessing import Process def server(ip,port): server ...
- 关于HttpModule和HttpHandler以及HttpApplication
HttpRuntime打交道的是http协议跟IIS层面的东西,HttpApplication则具体到应用程序这一级别(也就是一个网站,这个跟web.config关系是基本一一对应的,像Module跟 ...