题意: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的更多相关文章

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

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

  2. 【Codeforces 98E】 Help Shrek and Donkey

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

  3. 【Codeforces 98E】 Help Shrek and Donkey 游戏策略神题

    from http://www.cnblogs.com/MashiroSky/p/6576398.html A君有n张牌,B君有m张牌,桌上还有一张反扣着的牌,每张牌都不一样. 每个回合可以做两件事中 ...

  4. 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 ...

  5. The Donkey of Gui Zhou

    Problem Description There was no donkey in the province of Gui Zhou, China. A trouble maker shipped ...

  6. 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 ...

  7. hdu 4740 The Donkey of Gui Zhou

    1.扯犊子超多if else 判断的代码,华丽丽的TLE. #include<stdio.h> #include<string.h> #define N 1010 int ma ...

  8. hdu 4740 The Donkey of Gui Zhou(暴力搜索)

    题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=4740 [题意]: 森林里有一只驴和一只老虎,驴和老虎互相从来都没有见过,各自自己走过的地方不能走第二次 ...

  9. HDU 4740 The Donkey of Gui Zhou (模拟)

    由于一开始考虑的很不周到,找到很多bug.....越改越长,不忍直视. 不是写模拟的料...................... 反正撞墙或者碰到已经走过的点就会转向,转向后还碰到这两种情况就会傻站 ...

随机推荐

  1. [hdu 3949]线性基+高斯消元

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3949 一开始给做出来的线性基wa了很久,最后加了一步高斯消元就过了. 之所以可以这样做,证明如下. 首 ...

  2. Welcome to ShangHai <码农上漂记>

    来上海这边快三周了,一切都还算顺利,多亏了朋友们的帮助,要不就得街头打地铺了.对于上海这样的大都市,年轻的我们都想挤一挤,凑凑热闹,实现自己的小小抱负.然而不是每个人都混的起的.以前的我还总想着来大城 ...

  3. 解决perm size out of memeory的问题

    在idea中配置如下即可 -Xms1024m -Xmx1024m -XX:MaxNewSize=512m -XX:MaxPermSize=512m 如下图所示:

  4. Java之戳中痛点 - (1)易变业务使用脚本语言编写

    脚本语言的3大特征: 1.灵活:脚本语言一般是动态类型,可以不声明变量类型直接使用,也可以在运行期改变类型:2.便捷:脚本语言是解释性语言,在运行期变更非常方便,而不用重启服务3.简单:脚本语言语法比 ...

  5. javascript错误处理(转)

    1.onerror事件处理函数onerror事件处理函数是第一个用来协助javascript处理错误的机制.页面上出现异常时,error事件便在window对象上触发.例如: <html> ...

  6. css和javascript中图片路径的不同

    之前在写前端代码时,在图片路径的设置那里经常会遇到一个问题.比方说,我 (1)在根目录下面新建了个"images"文夹,里面放了张图片top.gif (2)在根目录下另外新建了两个 ...

  7. 斯特林数(Stirling number)

    在组合数学,Stirling 数可指两类数,第一类Stirling 数和第二类 Stirling 数,都是由18世纪数学家 James Stirling 提出的. Stirling 数有两种,第一类和 ...

  8. CF502C The Phone Number

    C. The Phone Number time limit per test 1 second memory limit per test 256 megabytes     Mrs. Smith ...

  9. Kubernetes : 多节点 k8s 集群实践

    说明: 本文参考 『 Kubernetes 权威指南 』 第一章的案例. 需要说明的是, 这本书里有很多描述的东西和实践的案例不吻合. Kubernets 集群架构 架构图 Server List 节 ...

  10. csrf_execmp

    参考;https://www.cnblogs.com/zhaof/p/6281482.html 全局: 中间件 django.middleware.csrf.CsrfViewMiddleware 局部 ...