[CF98E]Help Shrek and Donkey
题意:A和B两个卡牌大师玩游戏,A有$n$张牌,B有$m$张牌,桌上有$1$张牌,这$n+m+1$张牌互不相同且A和B都知道这些牌里有什么牌(但他们互相不知道对方有什么牌,两个人也都不知道桌上的那张牌是哪张),游戏轮流进行,A先手,每轮可以①询问对方有没有某张牌,如果对方有,就要把它丢弃,否则表明自己没有这张牌②猜测桌上的牌,猜对了就赢,猜错了就输,问$A$和$B$获胜的概率(假设两人都磕了药足够聪明)
很棒的题啊!奇妙思路++
首先肯定只有在最后才会去猜测桌上的牌,因为要一发定输赢
假设这轮是A,下一轮是B,那么A可以去询问B有没有某张牌,这个询问有两种性质,可以是
①真询问,也就是随机询问对方有没有$m+1$张牌中的某一张
②假询问,也就是随机询问对方有没有自己$n$张牌中的某张牌
为什么要有假询问?因为这样做可以勾引B去猜桌上的牌,如果B猜错了,A自然就赢了
下面对A的询问真假性和B的反应分类讨论,设先手有$n$张牌,后手有$m$张牌时先手获胜的概率是$f\left(n,m\right)$
①A做真询问
如果问到B有的牌,那么B就知道A是在做真询问,局面就变成B扔掉一张牌并先手;此时A获胜的概率是$\dfrac{m}{m+1}\left(1-f\left(m-1,n\right)\right)$
如果恰好问到桌上那张牌:如果B认为A在做真询问,那么B就赢了;如果B认为A在做假询问,那么B之后就会认为桌上的牌不是这张,A就知道桌上的牌是这张,那么A就赢了,此时A获胜的概率应加上$\dfrac{1}{m+1}$
②A做假询问
如果B认为A是在做真询问,那么他就会猜错,A稳赢,获胜概率为$1$
如果B认为A是在做假询问,那么A和B都知道A有这张牌,和扔掉没有区别,所以局面相当于A扔掉一张牌后B先手,此时A获胜的概率为$1-f\left(m,n-1\right)$
假设A有$p$的概率选择真询问,有$1-p$的概率选择假询问,因为B会让A获胜的概率尽可能小,所以A的总获胜概率为
$\min\left\{\dfrac{pm}{m+1}\left(1-f\left(m-1,n\right)\right)+1-p,p\left(\dfrac{1}{m+1}+\dfrac{m}{m+1}\left(1-f\left(m-1,n\right)\right)\right)+\left(1-p\right)\left(1-f\left(m,n-1\right)\right)\right\}$
A要找到一个$p$使上面这个式子最大,如果把$p$作为自变量这其实就是两个一次函数取$\min$,一个单调递增一个单调递减,所以直接取交点即可
最后发现这其实是个DP,因为转移时下标比较鬼畜所以写成递归的形式会比较好
真是妙啊!
#include<stdio.h>
double p[1010][1010];
double du(int x){return x;}
void f(int n,int m){
if(p[n][m]>0)return;
if(n==0){
p[0][m]=1/du(m+1);
return;
}
if(m==0){
p[n][0]=1;
return;
}
f(m-1,n);
f(m,n-1);
double pr=p[m][n-1]/(p[m][n-1]+1/du(m+1));
p[n][m]=pr*m/du(m+1)*(1-p[m-1][n])+1.-pr;
}
int main(){
int n,m;
scanf("%d%d",&n,&m);
f(n,m);
printf("%.9lf %.9lf",p[n][m],1.-p[n][m]);
}
[CF98E]Help Shrek and Donkey的更多相关文章
- [CF98E]Help Shrek and Donkey(纳什均衡)
https://www.cnblogs.com/MashiroSky/p/6576398.html #include<cstdio> #include<algorithm> # ...
- 【Codeforces 98E】 Help Shrek and Donkey
http://codeforces.com/problemset/problem/98/E (题目链接) 题意 A君有n张牌,B君有m张牌,桌上还有一张反扣着的牌,每张牌都不一样. 每个回合可以做两件 ...
- 【Codeforces 98E】 Help Shrek and Donkey 游戏策略神题
from http://www.cnblogs.com/MashiroSky/p/6576398.html A君有n张牌,B君有m张牌,桌上还有一张反扣着的牌,每张牌都不一样. 每个回合可以做两件事中 ...
- hdu 4740 The Donkey of Gui Zhou bfs
The Donkey of Gui Zhou Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproble ...
- The Donkey of Gui Zhou
Problem Description There was no donkey in the province of Gui Zhou, China. A trouble maker shipped ...
- hdu 4740 The Donkey of Gui Zhou(dfs模拟好题)
Problem Description There was no donkey ,) , the down-right cell ,N-) and the cell below the up-left ...
- hdu 4740 The Donkey of Gui Zhou
1.扯犊子超多if else 判断的代码,华丽丽的TLE. #include<stdio.h> #include<string.h> #define N 1010 int ma ...
- hdu 4740 The Donkey of Gui Zhou(暴力搜索)
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=4740 [题意]: 森林里有一只驴和一只老虎,驴和老虎互相从来都没有见过,各自自己走过的地方不能走第二次 ...
- HDU 4740 The Donkey of Gui Zhou (模拟)
由于一开始考虑的很不周到,找到很多bug.....越改越长,不忍直视. 不是写模拟的料...................... 反正撞墙或者碰到已经走过的点就会转向,转向后还碰到这两种情况就会傻站 ...
随机推荐
- 一个简易的Python全站抓取系统
很长时间没有更新博客了,前一阵时间在做项目,里面有一个爬虫系统,然后就从里面整理了一点代码做成了一个简易的爬虫系统,还挺实用的. 简单说来,这个爬虫系统的功能就是:给定初始的链接池,然后设定一些参数, ...
- fastjson对json操作
fastjson对json字符串JSONObject和JSONArray互相转换操作示例 fastjson的方法: Fastjson API入口类是com.alibaba.fastjson.JSON ...
- HBase并行写机制(mvcc)
HBase在保证高性能的同时,为用户提供了便于理解的一致性数据模型MVCC (Multiversion Concurrency Control),即多版本并发控制技术,把数据库的行锁与行的多个版本结合 ...
- keydown
<!DOCTYPE HTML><html><head> <meta charset="utf-8"> <title>无标 ...
- iOS 之持久化存储 plist、NSUserDefaults、NSKeyedArchiver、数据库
1.什么是持久化? 本人找了好多文章都没有找到满意的答案,最后是从孙卫琴写的<精通Hibernate:Java对象持久化技术详解>中,看到如下的解释,感觉还是比较完整的.摘抄如下: 狭义的 ...
- Activiti工作流引擎核心介绍
引言 Activiti 作为一个遵从 Apache 许可的工作流和业务流程管理开源平台,其核心是基于 Java 的超快速.超稳定的 BPMN 2.0 流程引擎,强调流程服务的可嵌入性和可扩展性,同时更 ...
- CodeForces - 682B 题意水题
CodeForces - 682B Input The first line of the input contains a single integer n (1 ≤ n ≤ 100 000) — ...
- Things To Do Before NOI2017
TC div1 10套 数据结构 25题 网络流 10题 字符串 20题 数学 15题 图论 15题 计算几何 5题 提交答案 5题 嗯...先这些吧... 以上所有题目,博客都会有更新--- NOI ...
- 「6月雅礼集训 2017 Day1」说无可说
[题目大意] 给出n个字符串,求有多少组字符串之间编辑距离为1~8. n<=200,∑|S| <= 10^6 [题解] 首先找编辑距离有一个n^2的dp,由于发现只找小于等于8的,所以搜旁 ...
- wikioi 1245最小的N个和
2013-09-08 10:12 LRJ的算法竞赛入门经典训练指南里有类似的题,原题要难很多,p189页 读入A,B两组中的所有数后,建立N个有序表: A1+B1<A2+B1<A3+B1& ...