【2024“钉耙编程”中国大学生算法设计超级联赛】博弈
题目大意
有一个字符集 ,两人轮流等概率的从中取出字符拼接到自己原本的空串后面,求先手的字典序严格大于后手的概率对 取模的结果。
其中数据范围满足,,不保证 。
思路
设 ,Alice、Bob 的字符串分别为 , 表示字符集合, 表示字符 的数量。
先考虑 为偶数的情况,我们发现,对于每一种 的方案,把他们反转过来,则有相应的 的方案,且概率相等,则有:
\begin{align} Pr[A>B]&=Pr[A<B]\\ &=1-Pr[A=B]-Pr[A>B]\\ &=\dfrac{1-Pr[A=B]}{2} \end{align}
考虑怎么求 的概率,首先要满足每个字符出现次数都是偶数。
由于他一共有 种方案, 的方案有 。
上面表示把相同的字符看作不同的时候所有方案,下面在去重,最后就是后面除以前面就是:
那么考虑一下 为奇数的情况,唯一变化的就是 序列的长度比 多了 ,我们设 ,则有:
\begin{align} Pr[A>B]&=Pr[A'>B]+Pr[A'=B]\\ &=Pr[A'<B]+Pr[A'=B]\\ &=Pr[A<B]+Pr[A'=B]\\ &=1-Pr[A>B]+Pr[A'=B]\\ &=\dfrac{1+Pr[A'=B]}{2} \end{align}
还是类似上面求即可,唯一一个出现了奇数次的放最后。