治疗之雨
给定 (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 o f_j) 的概率,若 (i>j),则即本轮操作其恰好有 (i-j) 次操作命中了 (1) 的概率。
分类讨论:
- 若 (i e n),那么有 (frac{1}{m+1}) 的概率命中 (1) 接下来当作 (i+1) 处理即可。
- 后者直接作为 (i) 处理即可。
另一边,我们计算的答案实际上是恰好命中了 (o) 次的概率:
[inom{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_{jge i}^{k} inom{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 e n) 这两个条件,原式等价于:
[egin{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 imes f(1)+b),然后注意到唯一没有被利用的方程是 (f(n)),所以我们再在 (f(n)) 处解一个方程即可。
复杂度 (mathcal O(Tcdot n^2))
当然,特判一下 (k=0) 输出 (-1) 以及 (m=0) 的输出 (frac{p}{k-1})