题解:CF98E Help Shrek and Donkey

首先,在最优策略的条件下,在没有多余信息的情况时,先手不会主动去猜测,只会不断地尝试询问。

接下来我们尝试列出以下表格。其中,上方是先手,左侧是后手。先手询问一张自己手中没有的牌,称之为;询问一张自己手中有的牌,称之为

先后手问(自己没有的牌)诈(自己有的牌)
相信先手A\texttt{A}AB\texttt{B}B
不相信先手C\texttt{C}CD\texttt{D}D

fn,mf_{n,m}fn,m 表示先手有 nnn 张,后手有 mmm 张牌时,先手获胜的概率。对四种情况进行详细地分析:

Case A\texttt{Case A}Case A

  • 1m+1\frac{1}{m + 1}m+11 的概率问到桌上的那张牌。由于后手选择相信,后手也就知晓了桌上的牌,因此下一次可以直接猜测这张牌而获胜。

  • mm+1\frac{m}{m + 1}m+1m 的概率问到后手手中的牌。后手失去一张牌且无多余信息获得。

因此该种情况的收益为 1m+1×0+mm+1(1−fm−1,n)\frac{1}{m + 1} \times 0 + \frac{m}{m + 1}(1-f_{m - 1,n})m+11×0+m+1m(1fm1,n)

Case B\texttt{Case B}Case B

后手认为这张牌是桌上的牌,因此后手无法获胜,收益为 111

Case C\texttt{Case C}Case C

  • 1m+1\frac{1}{m + 1}m+11 的概率问到桌上的那张牌。由于后手选择不相信,相当于后手认为这张牌是先手的,因此先手胜。

  • mm+1\frac{m}{m + 1}m+1m 的概率问到后手手中的牌。后手失去一张牌且无多余信息获得。

因此该种情况的收益为 1m+1×1+mm+1(1−fm−1,n)=1−mm+1fm−1,n\frac{1}{m + 1} \times 1 + \frac{m}{m + 1}(1-f_{m - 1,n}) = 1 - \frac{m}{m + 1}f_{m - 1,n}m+11×1+m+1m(1fm1,n)=1m+1mfm1,n

Case D\texttt{Case D}Case D

相当于后手知晓了先手的一张牌,先手无多余信息获得,收益为 1−fm,n−11 - f_{m,n - 1}1fm,n1

四种情况均已知晓后我们就需要找到纳什均衡,换句话说,就是找到一个概率 ppp 使得每个人的选择都让对方无法猜透,更进一步来说,就是期望价值相等(如果画图,可以得到两条线存在非坐标轴处的交点)。因此可列出方程:

pA+(1−p)B=pC+(1−p)Dp(A−B−C+D)=D−Bp=B−DB+C−A−D pA + (1 - p)B = pC + (1 - p)D \\ p(A - B - C + D) = D - B \\ p = \dfrac{B - D}{B + C - A - D} pA+(1p)B=pC+(1p)Dp(ABC+D)=DBp=B+CADBD

代码用记忆化即可,注意边界情况:

long double dfs (int x,int y)
{
	if (dp[x][y]) return dp[x][y];
	if (!x) return dp[x][y] = 1.0 / (y + 1);
	if (!y) return dp[x][y] = 1.0;
	long double A = 1.0 * y / (y + 1) * (1 - dfs (y - 1,x)),B = 1.0,C = 1.0 - 1.0 * y / (y + 1) * dfs (y - 1,x),D = 1 - dfs (y,x - 1);
	long double p = (B - D) / (B + C - A - D);
	return dp[x][y] = p * A + (1 - p) * B;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值