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. [转]资深CTO:关于技术团队打造与管理的10问10答

    一.你如何衡量软件工程师个人的工作表现?如何衡量整个工程师团队的工作表现? 主要从两方面: 这个员工做的工作是不是他同意做的或者应该做的?(What) 他们是如何完成自己的工作的?(How) 任何绩效 ...

  2. Python接口测试实战3(上)- Python操作数据库

    如有任何学习问题,可以添加作者微信:lockingfree 课程目录 Python接口测试实战1(上)- 接口测试理论 Python接口测试实战1(下)- 接口测试工具的使用 Python接口测试实战 ...

  3. Linux☞如何修改文件权限

    修改文件/目录的权限:chmod  规则 文件/目录名 规则: 角色:u 自己人  user g 同组人 group         o 其他人 other a 所有人 all 操作: + - 权限 ...

  4. JavaFX学习笔记——ControlsFX控件集学习——ToggleSwitch和BreadCrumbBar例子

    ToggleSwitch ToggleSwitch ts = new ToggleSwitch("开"); 效果 BreadCrumbBar BreadCrumbBar<St ...

  5. python编辑用户登入界面

    1.需求分析 登入界面需要达到以下要求: 系统要有登入和注册两个选项可供选择 系统要能够实现登入出错提示,比如账户密码错误等,用户信息保存在user_info.txt文件夹中 系统要能够进行登入错误次 ...

  6. 获取label标签内for的属性值-js

    <body> <div class="row_2" id="ass"> <label for="aaa"> ...

  7. pandas中DataFrame的ix,loc,iloc索引方式的异同

    pandas中DataFrame的ix,loc,iloc索引方式的异同 1.loc: 按照标签索引,范围包括start和end 2.iloc: 在位置上进行索引,不包括end 3.ix: 先在inde ...

  8. SSH 框架的心得

    使用SSH框架做完了一个普通网站的前后台项目,成热写点心得,免得以后再入坑.其中使用 Strust2  2.3.33 + Spring 4.3.9 + Hibernate 5.2.10 eclipse ...

  9. String、Date、Calendar之间的转换

    1.String.Date.Calendar之间的转换 要用到格式化类SimpleDateFormat package com.rong.se; import java.text.ParseExcep ...

  10. Scrum Meeting Beta - 1

    Scrum Meeting Beta - 1 NewTeam 2017/11/28 地点:主南201 任务反馈 团队成员 完成任务 计划任务 安万贺 详细讨论Beta阶段的任务和具体分工 了解缓存的相 ...