闲话 23.2.23
闲话
今天闲话写着半知半解的
权当是抛砖引玉了
今天第一首歌是啥?没看到名字就给擦了
感觉……不像是能破圈的代表
第二首就是很 classical 的古风歌了
怎么说呢 好听也是 classical 的好听
今天看到好图
今日推歌:深海少女 - ゆうゆ feat. 初音ミク
很经典的好歌了 最近总是唱旋律
因为不太记得词了
\(\text{PGF: EGF} \to \text{OGF}\)
我们常会遇到这类题目:给定一个互异位置集合以及位置信息相关的随机过程,求多次操作后位置集合到达某一状态的概率。由于这条件等价于带标号,我们常用写成 egf 的 pgf 来刻画相关转移,最后提取系数得到概率。然而,当题目中询问期望相关的信息时,egf 可能就力不从心了;我们知道,写成 ogf 的 pgf 可以直接求导后带入 \(x = 1\) 得到期望,而 egf 形式没有相关性质。
但这也不是说我们就一定不能用 egf 来推导式子。对于一类特殊形式的 egf,我们可以轻易地将其转化为 ogf 形式。假设给定一个 egf
则我们知道,它的系数对应的 ogf 即为
推导不难。
这样,我们就能在求解一些特殊的期望问题时首先采用 egf 推导,在合适的时候代换为 ogf 求解。下面记 ogf 是正常大写字母,egf 在字母上加 \hat
代表。
\(\text{Bonus:}\) 可以通过形式 Laplace-Borel 变换将任意 ogf 和 egf 互换形式。
形式 Laplace-Borel 变换
设 \(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。
有一个 \(h\) 行 \(w\) 列的棋盘,每个格子内都有一个为 \(0\) 或 \(1\) 的数字。棋盘的初始状态由 \(h\) 个长为 \(w\) 的只包含
0
和1
的字符串 \(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)}\)。最终答案即为
\(G,H\) 同构,以 \(G\) 为例。
首先考虑如何求解 \(\hat G\)。可以发现,想要从初始状态到达最终状态,我们需要一部分格子里的数字不同,另一部分的数字相同,这也就代表着一部分格子需要被翻转奇数次,另一部分则是偶数次。假设 \(\hat A_c(x)\) 表示单个格子翻转次数奇偶性为 \(c\) 的概率的 egf,则可以知道
也就是
假设最终翻转奇数次格子数量为 \(k\) 的方案的计数为 \(c_k\),则我们能知道
可以导出
可以发现这个系数就是
可以暴力计算。这部分的总时间复杂度为 \(O(n^2)\)。
然后可以自然得到
注意到当 \(2t - n = n\) 时 \(G(1)\) 无意义,因此不妨改为计算
可以发现这分式上下两部分都有意义。计算出 \((1 - x)G(x)\) 和 \(((1 - x)G(x))'\) 分别带入 \(x = 1\) 的解后我们就解决了原问题。
一个 \(n\) 面骰子,每次操作会随机骰出一个面。对于所有 \(1 \le k \le m\) 求第一次恰好骰出所有面的操作次数的 \(k\) 次方的期望。
\(n, m\le 2\times 10^5\)。
k 次方的期望?我们先不管那玩意,考虑如何刻画概率。
设 \(\hat F(x)\) 为操作次数恰为 \(k\) 次的概率的 egf。考虑最后一次骰出的面一定是第一次出现,并枚举其他面投出次数(大于 \(0\))的概率,可以直接写出
能写出
这个的形式就不是那么显然了,由于有一个不在指数上的 \(x\),我们不能直接代换。但由于这是 \(\forall k\) 的线性组合,我们不妨将其视作 \(\sum a_i \hat F_i\),现在首先将 \(\hat F_i\) 转化成 ogf。
可以知道
可以通过分治乘法得到 \(F(x) = P(x) / Q(x)\) 的形式。
现在我们得到了概率的 ogf,然后就是考虑求期望的 \(k\) 次方了。一个常见结论是期望的 \(k\) 次方即为
这是由于
当操作次数为 \(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\) 次方的答案,具体缘由留与读者思考。我不知道为啥
以下是博客签名,与正文无关。
请按如下方式引用此页:
本文作者 joke3579,原文链接:https://www.cnblogs.com/joke3579/p/chitchat230223.html。
遵循 CC BY-NC-SA 4.0 协议。
请读者尽量不要在评论区发布与博客内文完全无关的评论,视情况可能删除。