治疗之雨
治疗之雨
给定 \(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\) 次的概率:
注意到 \(o\) 必然是很小的,所以这一部分可以递推,我们记为 \(f_o\) 即可。
然而如果是走到 \(0\) 就需要考虑后续不能走的情况,假设需要 \(i\) 次走到 \(0\),那么答案应为:
这个式子非常的不二项式定理,然后我就不会了,看了一下题解莫名奇妙那些憨憨集体说不需要考虑,我觉得非常需要考虑的,无法理解啊 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\) 这两个条件,原式等价于:
于是我们可以将所有数表示为 \(k\times f(1)+b\),然后注意到唯一没有被利用的方程是 \(f(n)\),所以我们再在 \(f(n)\) 处解一个方程即可。
复杂度 \(\mathcal O(T\cdot n^2)\)
当然,特判一下 \(k=0\) 输出 \(-1\) 以及 \(m=0\) 的输出 \(\frac{p}{k-1}\)