「codeforces - 1477F」 Nezzar and Chocolate Bars

link


以下记 \(L = \sum l_i\)

\(p_{i,j}\) 表示第 \(i\) 块巧克力切 \(j\) 刀,使得每段长度 \(< k\) 的概率。

\(P_i(z) = \sum\frac{p_{i,j}}{j!}(\frac{l_i}{L}z)^j\)

\(Q(z) = e^z -\prod P_i(z) = \sum\frac{q_k}{k!}z^k\),表示第 \(k\) 步仍未结束的概率为 \(q_k\)

则可以得到 \(E = \sum[z^i]Q(z)\times i!\)


考虑给定单个巧克力原长为 \(l\),求切 \(m\) 刀,使得每段长度 \(< k\) 的概率 \(p_m\)

换元:原长为 \(w = \frac{l}{k}\),每段长度 \(< 1\)

即随机生成 \((X_1, X_2, \dots, X_m)\) 满足 \(0 < X_i < \frac{l}{k}\),求加入 \(X_0 = 0, X_{m+1} = \frac{l}{k}\) 并排序后 \(X'_{i+1} - X'_i < w\) 的概率 \(p_m\)

考虑直接随机生成差分变量 \(Y_1,Y_2,\dots Y_m\),则需满足要求 \(0 < Y_i < 1, w - 1 < \sum Y_i < w\)

注意此时生成 \(Y_i\) 时要求 \(Y_i > 0,\sum Y_i < w\),积分可得 \(\frac{w^m}{m!}\)

考虑计算如下的积分:

\[F(x) = \int_{Y_i\in(0, 1),\sum Y_i < x}1dY_1dY_2\dots dY_m \]

几何意义即 \(m\) 维下的超立方体(\(Y_i\in(0, 1)\))与超棱锥(\(Y_i>0,\sum Y_i<x\))的交。

可以证明 \(F(x) = \sum_{t=0}^{\lfloor x\rfloor}(-1)^k\binom{n}{t}\times \frac{(x-t)^m}{m!}\)

证明思路可以考虑容斥,枚举有 \(t\)\(Y > 1\)

这个分布在 tutorial 中被称为 "Irwin–Hall distribution"(连百度都百度不到的东西 那只能说明百度是屑)。

由上,我们已经可以计算概率 \(p_m\)(下记 \(u = \lfloor w\rfloor\)):

\[\begin{aligned} p_m &= \frac{F(w) - F(w-1)}{\frac{w^m}{m!}} \\ &= \left(\sum_{t=0}^u(-1)^t\binom{m}{t}(1-\frac{t}{w})^m\right) - \left(\sum_{t=0}^{u-1}(-1)^t\binom{m}{t}(1-\frac{t+1}{w})^m\right) \end{aligned} \]

通过变换可得 \(p_m = \sum_{t=0}^{u}(-1)^t\binom{m+1}{t}(1-\frac{t}{w})^m\),但这个形式只是更简洁,其实并不影响我们下面的代入。


后面的推导就比较 trivial 了,稍微写简略一点吧。 对不起,我一开始推错了。后面的某些推导还是有些 tricky 的。

\(w_i = \frac{l_i}{k}, u_i = \lfloor w_i\rfloor\),直接代入 \(p_{i,j}\)

\[\begin{aligned} F_i(z) &= \sum_{j\geq 0}\left(\sum_{t=0}^{u_i}(-1)^t\binom{j}{t}(1-\frac{t}{w_i})^j\right)\times\frac{(\frac{l_i}{L}z)^j}{j!} \\ G_i(z) &= \sum_{j\geq 0}\left(\sum_{t=0}^{u_i-1}(-1)^t\binom{j}{t}(1-\frac{t+1}{w_i})^j\right)\times\frac{(\frac{l_i}{L}z)^j}{j!}\\ P_i(z) &= F_i(z) - G_i(z) \end{aligned} \]

接下来算 \(F_i\)\(G_i\) 同理),注意 \((1-\frac{t}{w_i})\times\frac{l_i}{L} = \frac{l_i-tk}{L}\)

\[\begin{aligned} F_i(z) &= \sum_{t=0}^{u_i}\frac{(-1)^t}{t!}\times\left(\sum_{j\geq 0}\frac{(\frac{l_i-tk}{L}z)^j}{(j-t)!}\right)\\ &= \sum_{t=0}^{u_i}\frac{(-1)^t}{t!}\times\left(\frac{l_i-tk}{L}z\right)^t\times\exp(\frac{l_i-tk}{L}z) \\ &= \exp(\frac{l_i}{L}z)\times \left(\sum_{t=0}^{u_i}\frac{(-1)^t}{t!}\times\left(\frac{l_i-tk}{L}z\right)^t\times\exp(-\frac{kt}{L}z)\right) \end{aligned} \]

稍后会看到,提出因子 \(\exp(\frac{l_i}{L}z)\) 这一步将会简化我们的状态定义。

在提出因子 \(\exp(\frac{l_i}{L}z)\) 后,\(F_i(z)\) 剩余部分可以表示成 \(f_tz^t\exp^t(-\frac{k}{L}z)\);同理 \(G_i(z)\) 剩余部分可以表示成 \(g_tz^t\exp^{t+1}(-\frac{k}{L}z)\)

因此 \(Q(z)\) 可以表示成 \(\exp(z)\times(1 - \sum a_{i,j}z^i\exp^{i+j}(-\frac{k}{L}z))\),其中 \(i\leq L, j \leq n\)

之后只需要考虑计算 \(\sum[z^t]z^i\times\exp(Az)\times t!\),即 \(\sum_{t\geq 0}(t+i)^{\underline{i}}A^t=\frac{i!}{(1 - A)^{i+1}}\)

可以错位相减得到结果,也可以考虑变形成 \(i!\sum\binom{t+i}{i}A^t\)

时间瓶颈卡在求 \(Q(z)\) 的系数,暴力复杂度 \(O(nL^2)\)(虽然看似是 \(O(n^2L^2)\)),但是出题人很仁慈,所以可以通过。

直接 fft 可做到 \(O(n^2L\log(L))\),分治 fft 可做到 \(O(nL\log(nL))\)


小疑惑:

虽然说连续函数考虑端点取值没有意义。

但是考虑如果仅有一根长度为 \(k\) 的巧克力棒,要求长度 \(< k\) 和要求长度 \(\leq k\) 的答案不一样。

嗯,想不透彻。

连续概率好难!!!好难!!!好难啊!!!


代码实现大概之后会补上,由于现在没有实现所以不保证内容的正确性。

边写代码边修锅过后的结果:https://codeforces.com/contest/1477/submission/106333507 (force)。

posted @ 2021-02-02 23:18  Tiw_Air_OAO  阅读(290)  评论(0编辑  收藏  举报