首页 > 其他分享 >CTSC2006 歌唱王国

CTSC2006 歌唱王国

时间:2022-12-04 20:47:51浏览次数:34  
标签:infty limits cdot sum 生成 歌唱 CTSC2006 Border 王国

技巧

算两次;概率生成函数性质的应用

题意

给定\(\{A_i\}_{i=1}^m, A_i\in [1, n]\)(\(\sum m \le 5\times 10^6, n \le 10^5\));生成一个序列\(\{X_i\}_{i=1}^\infty\), 其中\(X_i\)在\([1, n]\)中均匀独立随机;设随机变量\(T\)为第一个末尾位置\(t\)使得序列\(A\)在\(X\)中出现。求\(E(T)\)。

题解

首先进行一步转化,即通过拆分贡献的思想,\(E(T) = \sum\limits_{x=0}^\infty P(T>x)\),设\(g(x) = P(T>x)\),而\(G(z)\)为它的OGF,那么\(E(T) = G(1)\)。于是只要算\(G(1)\)即可,那么就要从\(g(x)\)入手。

接下来运用到“算两次”的技巧。考虑一个非结束的\(X\)前缀,长度为\(L\),它后面加上\(A\)一定就结束了,但是不一定是\(m\)步以后结束,实际上在该前缀\(X\)没有终止的条件下,\(T\in [L+1, L+m]\)。接下来用两种不同的方式计算生成了\(X\)的\(L\)前缀加上\(A\)这件事(事件\(V\))的概率\(P(V)\)。

第一种方法:首先生成长度为\(L\)的前缀没终止,然后生成接下来\(m\)个恰好就是\(A\),则\(P(V) = g(L)\cdot \frac{1}{n^m}\)。

第二种方法:首先枚举\(i\in [1, m]\),计算\(P(T = L+i)\);然后在这个前提下,接下来生成的\(m-i\)个数必须恰好是\(A\)的后缀,所以概率再乘上\(\frac{1}{n^{m-i}}\);除此之外注意到,因为\(T=L+i\),所以前\(i\)个字符一定是\(A\)的一个后缀,而为了让事件V成立,它也必须是\(A\)的一个前缀。所以只有\(A[1,i]\)是\(A\)的一个Border时才能贡献概率。

所以式子的完整版本是:

\[g(L)\cdot \frac{1}{n^m} = P(V) = \sum\limits_{i\in Border(A)} \frac{1}{n^{m-i}}\cdot P(T=L+i) \]

两边同时乘以\(n^m\)得到:

\[g(L) = \sum\limits_{i\in Border(A)} n^i\cdot P(T=L+i) \]

我们要求的就是\(g\)的生成函数在1处取值,所以我们用生成函数的语言改写这个式子:

\[G(z) = \sum\limits_{k=0}^\infty g(k)z^k = \sum\limits_{k=0}^\infty\sum\limits_{i\in Border(A)} n^i\cdot P(T=k+i) z^k \]

然后使\(P(T=k+i)\)和\(z^k\)对齐成一个PGF的形式,得到:

\[RHS=\sum\limits_{i\in Border(A)} n^iz^{-i}\sum\limits_{k=i}^\infty P(T=k)z^k \]

考虑到当\(k<i\le m\)时\(P(T=k) = 0\),可以把后面那个求和补全到0,变成一个完整的PGF:

\[F(z) = \sum\limits_{k=0}^\infty P(T=k)z^k \]

显然有\(F(1) = 1\)(概率生成函数的性质:所有概率的和为1),所以:

\[G(1) = \sum\limits_{i\in Border(A)} n^i\cdot 1^{-i}F(1) = \sum\limits_{i\in Border(A)} n^i \]

使用哈希或者KMP求一下Border即可(注意自己也是Border,对应了事件\(V\)可能直到把整个\(A\)都加完才发生)。

注:PGF:概率生成函数,OGF:普通生成函数

标签:infty,limits,cdot,sum,生成,歌唱,CTSC2006,Border,王国
From: https://www.cnblogs.com/kyeecccccc/p/16950615.html

相关文章

  • 动物王国
    动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形。A 吃 B,B 吃 C,C 吃 A。现有 N 个动物,以 1∼N 编号。每个动物都是 A,B,C 中的一种,但是我......
  • LibreOJ #6042. 「雅礼集训 2017 Day7」跳蚤王国的宰相
    题意修改一条边意味着,删掉一条边,并加入一条新的边。给出一棵树,对于每个点,求出使它变成重心的最小修改边数。分析先找到重心,对于不是重心的一个点\(i\),有两种方法,一是......
  • 起航 | 编程王国之我的大厂梦
    Java硬核学习指南从零基础进阶大厂|Java2Topby小龙coding。原创不易,请勿抄袭,违者必究!背景故事空暇之余,经常有很多粉丝、学弟学妹问我"如何学习Java,什么时候学......
  • 假钞在动物王国传开了。印刷假钞
    http://ds.163.com/article/63375c8fd3fdd00001972eed/http://ds.163.com/feed/63375c8fd3fdd00001972eed/http://ds.163.com/article/63375c91d70a9b0001f3ced4/http://ds.......