from http://www.cnblogs.com/MashiroSky/p/6576398.html

  A君有n张牌,B君有m张牌,桌上还有一张反扣着的牌,每张牌都不一样。

  每个回合可以做两件事中的一件

  • 猜测桌上的牌是什么,猜对则胜,猜败则输。
  • 询问对方是否有某张牌,若有则需要将其示出,否则继续游戏。

  A和B都很聪明,问A的胜率。

Solution

  首先不到最后一刻是不会选择猜桌上的牌的。

  假如某一次对方问了一张自己手上没有的牌,就可能会怀疑桌上的牌就是这张。

  而询问对方是否有某张牌,我们可以选择询问自己手上有的牌,假如对方相信而去猜测这张牌的话就会输掉,我们称这样的行为作欺骗。

  记f(n,m)f(n,m)表示先手有nn张牌,后手有mm张牌,先手的获胜概率。

  那么就可以列一个表格,表示先手的选择以及后手的应对。

  • 先手选择猜测对方的牌

    • 后手认为先手在猜测,先手获胜的概率是mm+1(1−f(m−1,n))mm+1(1−f(m−1,n))
    • 后手认为先手在欺骗,先手获胜的概率是1m+1+mm+1(1−f(m−1,n))1m+1+mm+1(1−f(m−1,n))
  • 先手选择欺骗

    • 后手认为先手在猜测,先手获胜的概率是11
    • 后手认为先手在欺骗,先手获胜的概率是1−f(m,n−1)1−f(m,n−1)

  那么对于先手的任意一个策略,后手会选择最优的策略去使他赢的概率尽可能小。也就是说假如先手用pp的概率选择去猜测,1−p1−p的概率选择去欺骗。那么最终的贡献就是

maxp{min{pmm+1(1−f(m−1,n))+(1−p),pm+1+pmm+1(1−f(m−1,n))+(1−p)(1−f(m,n−1))}}maxp{min{pmm+1(1−f(m−1,n))+(1−p),pm+1+pmm+1(1−f(m−1,n))+(1−p)(1−f(m,n−1))}}

  将pp视为自变量,问题就转化为两条直线取minmin的问题,求个交点就可以得到最大值。

细节

  直线的交点别求错了。。

+++++++++++++++++++++++++++++++++++++++++++++++++++++++

首先这个思路不太好想

其次在状态转移时,注意先手是可以两种决策随便选,故存在概率;而后手决策无非两种

脑补一下是这样的把。。

【Codeforces 98E】 Help Shrek and Donkey 游戏策略神题的更多相关文章

  1. 【Codeforces 98E】 Help Shrek and Donkey

    http://codeforces.com/problemset/problem/98/E (题目链接) 题意 A君有n张牌,B君有m张牌,桌上还有一张反扣着的牌,每张牌都不一样. 每个回合可以做两件 ...

  2. 【BZOJ5285】[HNOI2018]寻宝游戏(神仙题)

    [BZOJ5285][HNOI2018]寻宝游戏(神仙题) 题面 BZOJ 洛谷 题解 既然是二进制按位的运算,显然按位考虑. 发现这样一个关系,如果是\(or\)的话,只要\(or\ 1\),那么无 ...

  3. Codeforces Round #519 by Botan Investments(前五题题解)

    开个新号打打codeforces(以前那号玩废了),结果就遇到了这么难一套.touristD题用了map,被卡掉了(其实是对cf的评测机过分自信),G题没过, 700多行代码,码力惊人.关键是这次to ...

  4. [CF98E]Help Shrek and Donkey

    题意:A和B两个卡牌大师玩游戏,A有$n$张牌,B有$m$张牌,桌上有$1$张牌,这$n+m+1$张牌互不相同且A和B都知道这些牌里有什么牌(但他们互相不知道对方有什么牌,两个人也都不知道桌上的那张牌 ...

  5. NIM游戏策略

    NIM取子游戏是由两个人面对若干堆硬币(或石子,或..)进行的游戏,游戏由两个人进行,设有k>=1堆硬币,各堆含有n1,n2,n3,n4.....,nk个硬币,游戏的目的就是选取最后剩下的硬币. ...

  6. [CF98E]Help Shrek and Donkey(纳什均衡)

    https://www.cnblogs.com/MashiroSky/p/6576398.html #include<cstdio> #include<algorithm> # ...

  7. codeforces 705B B. Spider Man(组合游戏)

    题目链接: B. Spider Man time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  8. Codeforces 15C Industrial Nim 简单的游戏

    主题链接:点击打开链接 意甲冠军: 特定n 下列n行,每一行2的数量u v 表达v礧:u,u+1,u+2···u+v-1 问先手必胜还是后手必胜 思路: 首先依据Nim的博弈结论 把全部数都异或一下, ...

  9. Codeforces Gym 100650C The Game of Efil 模拟+阅读题

    原题链接:http://codeforces.com/gym/100650/attachments/download/3269/20052006-acmicpc-east-central-north- ...

随机推荐

  1. PostFix使用dovecot支持POP3/IMAP收信

    PostFix只能够收发邮件,以及使用SMTP发送邮件,想要使用POP3/IMAP收信的话必须装其他软件,本文通过配置dovecot让邮件服务器支持POP3/IMAP收信.POP3/IMAP是一种收信 ...

  2. stl源码分析之list

    本文主要分析gcc4.8版本的stl list的源码实现,与vector的线性空间结构不同,list的节点是任意分散的,节点之间通过指针连接,好处是在任何位置插入删除元素都只需要常数时间,缺点是不能随 ...

  3. Java 分割、合并byte数组

    场景:上传文件较大,把存放文件内容byte数组拆分成小的.下载的时候按照顺序合并. 起初觉得挺麻烦的,写完觉得挺简单. 切割: /** * 拆分byte数组 * * @param bytes * 要拆 ...

  4. IDEA 破解图文教程 - 2018.9 更

    你好!这里是你要找的 IDEA 破解方法 目录     一.前言    二.IDEA 安装         2.1 下载IDEA 旗舰版         2.2 开始安装         2.3 自定 ...

  5. Bellman-ford 模板

    #include<bits/stdc++.h> const int inf=0x3f3f3f3f; ; struct edge{ int u,v;//两个点 int w; //权值 Edg ...

  6. vue中的样式

    一.使用class样式: CSS部分: <style> .green{ color:green; } .italic{ font-style:italic; } .thin{ ; } .a ...

  7. vscode中安装使用markdown 插件

    linux中好用的IDE    vscode是微软推出的一款好用免费的IDE,可以快速部署开发环境,所说配置有些繁琐,但是瑕不掩瑜.它同时支持很多种拓展的编辑器,MarkDown只是其中的一种. 安装 ...

  8. Hackerank-Array-NewYearChaos

    题目背景描述 新年第一天,N 个人排队坐过山车.每个人穿有带编号的衣服 \([1, 2, 3, ...]\). 因为排队时间太久,有人发现给前面相邻的人喂一颗糖,就可以和他交换位置,而每人手里只有两颗 ...

  9. Python常用模块之PIL

    官方网址:http://www.pythonware.com/products/pil/index.htm Python Imaging Library (PIL) Python图像库(PIL)将图像 ...

  10. 2.openldap安装

    1.安装步骤如下 获取软件包 安装软件包(rpm或者源码编译) 生产openldap配置文件及数据库文件 配置 添加目录树条目 加载slapd进程 验证 2.所需安装包说明 openldap,open ...