[BZOJ1152][CTSC2006]歌唱王國Singleland(KMP + 概率生成函式)
阿新 • • 發佈:2018-12-08
Address
Solution
- 看了 yml 大佬的 IOI2018 國家候選隊論文,第一次瞭解到概率生成函式
- orz YML
- 先介紹一下概率生成函式
- 一個離散型隨機變數 的概率生成函式為:
- 顯然有
- 概率生成函式的應用之一就是如果按照上面的定義,則 的期望為
- 方差為
- 回到原問題,設隨機變數 表示插入多少個字元之後匹配到模式串,其概率生成函式為
- 表示插入 個字元之後沒有匹配到模式串的概率,其一般生成函式為
- 可以推出兩點性質
- 解釋: 的第 ( )項實際上是表示插入 個字元後沒有匹配成功的概率
- 而插入 個字元後沒有匹配成功,就相當於插入 個字元之後匹配成功或失敗
- 和 的第 ( )項正好對應
- 而 的第 項為 , 的第 項為
- 上面 表示字符集大小, 表示模式串長度, 表示模式串的長度為 的字首和長度為 的字尾是否相等(可用 KMP 求出),相等則為 ,不相等則為
- 讓我們來解釋下這個看上去沒有實際含義的式子
- 如果我們現在插入了一些字元,但沒有匹配成功
- 那麼如果把長度為 的模式串直接追加在我們已經插入的字元後面,就一定能匹配成功,這對應了等號左邊。等號左邊多項式 次項的意義可以看作匹配成功後不結束操作,但需要滿足在插入 個字元時不能匹配成功,在插入 個字元時恰好長度為 的字尾與模式串匹配成功的概率
- 分析一下等號右邊 次項的含義
- 列舉 就相當於列舉第一次匹配成功時已經插入了 個字元
- 然後還要再插入 個字元,使得當插入的總字元數達到 時再次匹配成功
- 這時候就必須滿足模式串的長度為 的字首和長度為長度為 的字尾相等
- 而 就表示接下來插入的 個字元必須是模式串的字尾
- 解釋完畢
- 對 兩邊同時求導