首页 > 其他分享 >闲话 23.2.23

闲话 23.2.23

时间:2023-02-23 21:22:51浏览次数:57  
标签:frac 23 闲话 sum ge 23.2 binom ogf hat

闲话

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

今天第一首歌是啥?没看到名字就给擦了
感觉……不像是能破圈的代表
第二首就是很 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 变换

设 \(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.

标签:frac,23,闲话,sum,ge,23.2,binom,ogf,hat
From: https://www.cnblogs.com/joke3579/p/chitchat230223.html

相关文章

  • 2.23学习总结
    今天学习了“改”内容:update.1.jsp<%@pageimport="dailysummer.Main"%><%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"......
  • 2-23总结
     这是今天在blibli上一起学习的一个代码但是发生了很奇怪的问题在博主的编译环境中并没有错误但是我这里经过运行之后发生了以下情况目前没找到解决方法,今天完全的......
  • 每日总结2023/2/23
    今天继续进行安卓的学习  用户名文本框  <?xmlversion="1.0"encoding="utf-8"?><LinearLayoutandroid:layout_width="match_parent"android:layout_h......
  • 从0到1一步一步玩转openEuler--23 openEuler管理进程-查看进程
    操作系统管理多个用户的请求和多个任务。大多数系统都只有一个CPU和一个主要存储,但一个系统可能有多个二级存储磁盘和多个输入/输出设备。操作系统管理这些资源并在多个用户......
  • 2023.2.23AcWing蓝桥杯集训·每日一题
    今天练习的思维为递推。AcWing3777.砖块题目描述\(n\)个砖块排成一排,从左到右编号依次为\(1∼n\)。每个砖块要么是黑色的,要么是白色的。现在你可以进行以下操作若......
  • C/C++图书管理系统[2023-02-23]
    C/C++图书管理系统[2023-02-23](辅修)高级语言程序设计课程设计图书管理系统设计并实现一个学校图书馆的图书管理系统。具体要求:1、 图书信息和借阅信息等保存在文本文......
  • 2023.2.23-王建民要求的软件工程第二周开课博客
    介绍自己:我是石家庄铁道大学软件工程系王建民老师的一名学生。现状、经验和计划:我现在在知识、能力等方面都不是很好。要认真学习与练习才能取得更好的效果。计划尽量的认......
  • 2023/2/23
    最近学习了安卓的一些基础知识,其中包括Activity之间的数据传输,资源文件的使用,元数据的传递和注册应用页面快捷方式。这些技能对于我们开发安卓应用来说都是非常重要的。首......
  • 2023.2.23模拟赛总结
    输出的freopen一定要写在printf前面!!7:35开题上去先看第一道很快写出一个30pts的暴力(结果忘了$10^9*10^9$会炸int结果当场挂大分)看到\(10^6\)的数据范围自......
  • 2022.2.23Android 开发之路
    今天学习了Android开发的设置视图的对齐方式设置视图的对齐方式有两种途径:采用layout_gravity属性,它指定了当前视图相对于上级视图的对齐方式采用gravity属性,它指定了下级......