治疗之雨

治疗之雨

给定 \(n,m,p,k\),表示你有 \(m+1\) 个变量,其中第一个变量的上限是 \(n\),下限为 \(0\),初始值为 \(p\),其余 \(m\) 个变量均为 \(\infty\),不存在到达上限或者下限。

定义一轮操作为:

  • 随机选择一个没有到达上限的数,给其 \(+1\),然后执行如下操作 \(k\) 次:
  • 随机选择一个没有到达下限的数,给其 \(-1\)

问期望操作多少轮使得第 \(1\) 个变量变成 \(0\)


显然一个状态只和第一数当前的权值相关。

\(f_i\) 表示当前第一个权值为 \(i\),期望需要多少次走到 \(n\)

那么有 \(f_n=0\)

考虑 \(f_i\to f_j\) 的概率,若 \(i>j\),则即本轮操作其恰好有 \(i-j\) 次操作命中了 \(1\) 的概率。

分类讨论:

  • \(i\ne n\),那么有 \(\frac{1}{m+1}\) 的概率命中 \(1\) 接下来当作 \(i+1\) 处理即可。
  • 后者直接作为 \(i\) 处理即可。

另一边,我们计算的答案实际上是恰好命中了 \(o\) 次的概率:

\[\binom{k}{o}(\frac{1}{m+1})^o(\frac{m}{m+1})^{k-o} \]

注意到 \(o\) 必然是很小的,所以这一部分可以递推,我们记为 \(f_o\) 即可。

然而如果是走到 \(0\) 就需要考虑后续不能走的情况,假设需要 \(i\) 次走到 \(0\),那么答案应为:

\[\frac{1}{(m+1)^i}\sum_{j\ge i}^{k} \binom{j-1}{i-1}\Big(\frac{m}{m+1}\Big)^{j-i} \]

这个式子非常的不二项式定理,然后我就不会了,看了一下题解莫名奇妙那些憨憨集体说不需要考虑,我觉得非常需要考虑的,无法理解啊 TAT。

不过如果不需要考虑的话,那么预处理 \(P_{x,y}\) 表示由 \(x\) 走到 \(y\) 的概率,那么得到 \(f_x=\sum P_{x,y}f_y+1\),然后高斯消元

\(n=1500\) 怎么消呢,注意到 \(P_{x,y}\) 实际上只关乎 \(x-y\),和 \(x\ne n\) 这两个条件,原式等价于:

\[\begin{aligned} &f(i)=1+\sum_{j=0}^{i+1}P_{i,j} f(j) \\&f(i+1)=\frac{f(i)-\sum_{j=0}^i P_{i,j}f(j)-1}{P_{i,i+1}} \end{aligned}\]

于是我们可以将所有数表示为 \(k\times f(1)+b\),然后注意到唯一没有被利用的方程是 \(f(n)\),所以我们再在 \(f(n)\) 处解一个方程即可。

复杂度 \(\mathcal O(T\cdot n^2)\)

当然,特判一下 \(k=0\) 输出 \(-1\) 以及 \(m=0\) 的输出 \(\frac{p}{k-1}\)

posted @ 2020-09-11 19:49  Soulist  阅读(157)  评论(0编辑  收藏  举报