CTSC2006 歌唱王国

题目链接:https://www.luogu.com.cn/problem/P4548

补了一下概率生成函数。

写的公式可能不规范请不要介意。


给出某个字符串\(S\),你手中有个字符串\(T\)一开始为空。每次随机往\(T\)后加一个字符,问\(S\)成为\(T\)的子串的期望次数。

字符集大小为\(c\)


正解是一条式子。可以做到\(O(n)\)

介绍下概率生成函数:\(F(x)=\sum_i P(i)x^i\)\(P(i)\)表示某个要求的变量最终值为\(i\)的概率。

于是有两条性质:\(F(1)=1\)(即所有概率加起来),\(F'(1)=E\)\(E\)表示期望,即\(\sum i P(i)\)

回到这题。设\(f_i\)表示结束的时候长度为\(i\)的概率,\(g_i\)表示长度为\(i\)的时候还没有结束的概率。\(F(x),G(x)\)分别为它们的生成函数。

显然有\(F(x)+G(x)=xG(x)+1 (1)\)

又根据意义可得\(G(x)(\frac{1}{c}x)^L=\sum a_iF(x)(\frac{1}{c}x)^{L-i}(2)\)。其中\(a_i\)表示\(i\)是否为\(S\)\(border\)。意义:左式表示一个还不包含\(S\)的串后面硬塞了一个\(S\)的方案数;但这个时候可能会提前结束,右边那个就是结束了之后再多塞了\(S_{L-i+1..L}\)。由于在右边\(F(x)\)相当于钦定了第一个结束的位置,所以不会算重。

根据这两个式子乱搞:

\((1)\)求导得\(F'(x)=(x-1)G'(x)+G(x)\),代入\(x=1\)\(F'(1)=G(1)\)

\((2)\)代入\(x=1\)\(G(1)=\sum a_iF(1)c^i\)

两条式子结合前面给出的两条概率生成函数的性质,得到\(E=\sum a_ic^i\)

posted @ 2020-12-28 18:57  jz_597  阅读(70)  评论(0编辑  收藏  举报