闲话 23.2.23

闲话

今天闲话写着半知半解的
权当是抛砖引玉了

今天第一首歌是啥?没看到名字就给擦了
感觉……不像是能破圈的代表
第二首就是很 classical 的古风歌了
怎么说呢 好听也是 classical 的好听

今天看到好图 ?九条疑惑 下次一定!

今日推歌:深海少女 - ゆうゆ feat. 初音ミク
很经典的好歌了 最近总是唱旋律
因为不太记得词了

\(\text{PGF: EGF} \to \text{OGF}\)

我们常会遇到这类题目:给定一个互异位置集合以及位置信息相关的随机过程,求多次操作后位置集合到达某一状态的概率。由于这条件等价于带标号,我们常用写成 egf 的 pgf 来刻画相关转移,最后提取系数得到概率。然而,当题目中询问期望相关的信息时,egf 可能就力不从心了;我们知道,写成 ogf 的 pgf 可以直接求导后带入 \(x = 1\) 得到期望,而 egf 形式没有相关性质。

但这也不是说我们就一定不能用 egf 来推导式子。对于一类特殊形式的 egf,我们可以轻易地将其转化为 ogf 形式。假设给定一个 egf

\[\hat F(x) = \sum_{i\ge 0} f_i e^{k_i x} \]

则我们知道,它的系数对应的 ogf 即为

\[F(x) = \sum_{i\ge 0}\frac{f_i} {1 - k_ix} \]

推导不难。

这样,我们就能在求解一些特殊的期望问题时首先采用 egf 推导,在合适的时候代换为 ogf 求解。下面记 ogf 是正常大写字母,egf 在字母上加 \hat 代表。

\(\text{Bonus:}\) 可以通过形式 Laplace-Borel 变换将任意 ogf 和 egf 互换形式。

形式 Laplace-Borel 变换

proof from jjdw

\(F(z)=\sum_{n\ge 0}f_nz^n,\hat F(z)=\sum_{n\ge 0}f_n\frac{z^n}{n!}\),则:

\[\begin{aligned} F(z)&=\int_0^\infty \hat F(tz)e^{-t}\,\mathrm dt\\ \hat F(z)&=\frac{1}{2\pi}\int_{-\pi}^\pi F(ze^{-i\theta })e^{e^{i\theta}}\,\mathrm d\theta \end{aligned}\]

from crashed's blog

ARC136F

有一个 \(h\)\(w\) 列的棋盘,每个格子内都有一个为 \(0\)\(1\) 的数字。棋盘的初始状态由 \(h\) 个长为 \(w\) 的只包含 01 的字符串 \(S_1, S_2, \dots, S_n\) 给定,\(S_i\) 的第 \(j\) 个字符表示棋盘上从上往下第 \(i\) 行、从左往右第 \(j\) 列的数字。

给定长为 \(h\) 的序列 \(a = (a_1, a_2, \dots, a_n)\),Sunke 会重复以下的操作直到对所有 \(i\) 有从上往下第 \(i\) 行中 \(1\) 的数量恰为 \(a_i\)

  • 随机选择一个格子,翻转该格子中的数(\(1\) 变为 \(0\)\(0\) 变为 \(1\))。

请求出 Snuke 执行操作次数的期望在模 \(998244353\) 意义下的值。

下面记 \(n = h\times w\)

根据经典套路,设 \(F(x)\) 为操作 \(k\) 次第一次满足条件的概率的 ogf,\(G(x)\) 为操作 \(k\) 次满足条件的概率的 ogf,\(H(x)\) 为从终止状态开始操作 \(k\) 次满足条件的概率的 ogf。
可以知道 \(G(x) = F(x) H(x)\),也就是 \(F(x) = \dfrac{G(x)}{H(x)}\)。最终答案即为

\[F'(1) = \frac{G'(1)H(1) - H'(1)G(1)}{G(1)^2} \]

\(G,H\) 同构,以 \(G\) 为例。

首先考虑如何求解 \(\hat G\)。可以发现,想要从初始状态到达最终状态,我们需要一部分格子里的数字不同,另一部分的数字相同,这也就代表着一部分格子需要被翻转奇数次,另一部分则是偶数次。假设 \(\hat A_c(x)\) 表示单个格子翻转次数奇偶性为 \(c\) 的概率的 egf,则可以知道

\[\hat A_c(x) = \sum_{k\ge 0} [k \bmod 2 = c] n^{-k} \frac{x^k}{k!} \]

也就是

\[\hat A_0(x) = \frac{e^{x/n} + e^{-x/n}}{2}\qquad \hat A_1(x) = \frac{e^{x/n} + e^{-x/n}}{2} \]

假设最终翻转奇数次格子数量为 \(k\) 的方案的计数为 \(c_k\),则我们能知道

\[\hat G(x) = \sum_{k = 0}^n c_k \hat A_1^k(x) \hat A_0^{n - k}(x) \]

可以导出

\[\begin{aligned} \hat G(x) &= \sum_{k = 0}^n c_k \hat A_1^k(x) \hat A_0^{n - k}(x) \\ &= \sum_{k = 0}^n c_k \left(\frac{e^{x/n} - e^{-x/n}}{2}\right)^k \left(\frac{e^{x/n} + e^{-x/n}}{2}\right)^{n - k} \\ &= \sum_{k = 0}^n \frac{c_k}{2^n} \sum_{i = 0}^k \binom{k}{i} (-1)^{k - i} e^{ix/n} e^{-(k - i)x/n} \sum_{j = 0}^{n - k} \binom{n - k}{j} e^{jx/n} e^{-(n - k - j)x/n} \\ &= \sum_{k = 0}^n \sum_{i = 0}^k \sum_{j = 0}^{n - k} \frac{c_k}{2^n} \binom{k}{i} \binom{n - k}{j}(-1)^{k - i} e^{(i - k + i + j - n + k + j)x/n} \\ &= \sum_{k = 0}^n \sum_{i = 0}^k \sum_{j = 0}^{n - k} \frac{c_k}{2^n} \binom{k}{i} \binom{n - k}{j}(-1)^{k - i} e^{(2i + 2j - n)x/n} \\ &= \sum_{t = 0}^n e^{(2t - n)x/n} \sum_{k = 0}^n\frac{c_k}{2^n} \sum_{i = 0}^k (-1)^{k - i}\binom{k}{i} \binom{n - k}{t - i} \\ &= \sum_{t = 0}^n e^{(2t - n)x/n} a_t \end{aligned}\]

可以发现这个系数就是

\[a_t = \sum_{k = 0}^n\frac{c_k}{2^n} \sum_{i = 0}^k (-1)^{k - i}\binom{k}{i} \binom{n - k}{t - i} = [x^t] \sum_{k = 0}^n\frac{c_k}{2^n} (x - 1)^k(x + 1)^{n - k} \]

可以暴力计算。这部分的总时间复杂度为 \(O(n^2)\)

然后可以自然得到

\[\begin{aligned} G(x) &= \sum_{t = 0}^n \frac{a_t}{1 - (2t - n)x/n} \end{aligned}\]

注意到当 \(2t - n = n\)\(G(1)\) 无意义,因此不妨改为计算

\[F(x) = \frac{(1 - x)G(x)}{(1 - x)H(x)} \]

可以发现这分式上下两部分都有意义。计算出 \((1 - x)G(x)\)\(((1 - x)G(x))'\) 分别带入 \(x = 1\) 的解后我们就解决了原问题。

Submission.

ARC154F

一个 \(n\) 面骰子,每次操作会随机骰出一个面。对于所有 \(1 \le k \le m\) 求第一次恰好骰出所有面的操作次数的 \(k\) 次方的期望。

\(n, m\le 2\times 10^5\)

k 次方的期望?我们先不管那玩意,考虑如何刻画概率。

\(\hat F(x)\) 为操作次数恰为 \(k\) 次的概率的 egf。考虑最后一次骰出的面一定是第一次出现,并枚举其他面投出次数(大于 \(0\))的概率,可以直接写出

\[\hat F(x) = x(e^{x/n} - 1)^{n - 1} \]

能写出

\[\hat F(x) = \sum_{k = 0}^{n - 1} \binom{n - 1}{k} (-1)^{n - 1 - k} x e^{kx/n} \]

这个的形式就不是那么显然了,由于有一个不在指数上的 \(x\),我们不能直接代换。但由于这是 \(\forall k\) 的线性组合,我们不妨将其视作 \(\sum a_i \hat F_i\),现在首先将 \(\hat F_i\) 转化成 ogf。

\[\begin{aligned} \hat F_k(x) &= x e^{kx/n} \\ &= \sum_{i \ge 0} \frac{k^i}{n^i} \frac{x^{i + 1}}{i!} \\ &= \sum_{i \ge 0} \frac{k^i}{n^i} (i + 1) \frac{x^{i + 1}}{(i + 1)!} \\ F_k(x) &= \sum_{i\ge 0} \frac{k^i}{n^i} (i + 1) x^{i + 1} \\ &= \frac{n}{k} \sum_{i\ge 1} i \left(\frac{kx}{n}\right)^i \\ &= \frac{n}{k} \frac{kx / n}{(1 - kx / n)^2} \\ &= \frac{x}{(1 - kx / n)^2} \end{aligned}\]

可以知道

\[F(x) = \sum_{k = 0}^{n - 1} \binom{n - 1}{k} (-1)^{n - 1 - k} \frac{x}{(1 - kx / n)^2} \]

可以通过分治乘法得到 \(F(x) = P(x) / Q(x)\) 的形式。

现在我们得到了概率的 ogf,然后就是考虑求期望的 \(k\) 次方了。一个常见结论是期望的 \(k\) 次方即为

\[[x^k/k!]F(e^x) \]

这是由于

\[\begin{aligned} F(e^x) &= \sum_{i\ge 0} f_i e^{ix} \\ &= \sum_{i\ge 0} f_i \sum_{k\ge 0} \frac{i^k x^k}{k!} \\ &= \sum_{k\ge 0} \left(\sum_{i\ge 0} f_i i^k\right) \frac{x^k}{k!} \end{aligned}\]

当操作次数为 \(i\) 次时的概率为 \(f_i\),贡献为 \(i^k\)。这就显然有结论。

但是我们不能直接求 \(F(e^x)\),一个最主要的原因就是它没法截断。\(F(x)\) 是求逆得到的,它有无穷项,我们不能简单地从 \(x^n\) 项截断后作复合。
但是 \(P, Q\) 是有限项的,我们可以考虑 \(F(e^x) = P(e^x) / Q(e^x)\),分别在 \(m\) 项截断,求出复合后再相除。

计算 \(P(e^x)\) 仍然可以考虑 egf 转 ogf 的思路。具体地,要计算 \(\sum_{i\ge 0} p_i e^{ix}\),我们不妨首先计算 \(\sum_{i\ge 0}\dfrac{p_i}{1 - ix}\),随后在第 \(k\) 项乘 \(k!\) 的逆元即可。仍然应用分治乘法可以在 \(O(m\log m)\) 的复杂度内得到答案。

但最后会发现 \([x^k/k!] F(e^x)\)\(k + 1\) 次方的答案,具体缘由留与读者思考。我不知道为啥

Submission.

posted @ 2023-02-23 21:14  joke3579  阅读(227)  评论(3编辑  收藏  举报