南外集训 2024.1.9 T3

发布时间 2024-01-09 16:26:00作者: kyEEcccccc

逆天。

题意

给定一个带 ?01 串,求所有填法下,后缀自动机节点的期望。\(1\le n\le 36\)

解法

后缀自动机节点数等于反串后缀树节点个数。这道题中,后缀树是一棵二叉树,记 \(a, b, c\) 表示其中有 \(0, 1, 2\) 个儿子的点个数。注意到 \(c = a - 1\),所以 \(Ans = a + b + c = 2a + b - 1\)\(a\) 实际上是在说有多少后缀加上 \(0\)\(1\) 都不存在;\(b\) 实际上是在说有多少后缀加上其中恰好一个依然存在。注意到 \(a\) 的系数恰好是 \(2\),所以记 \(P_0(i), P_1(i)\) 分别表示长度为 \(i\) 的后缀加上 \(0/1\) 以后不存在的概率,那么答案其实就是 \(\left(\sum\limits_{i=1}^nP_0(i)+P_1(i)\right)-1\)

如何计算 \(P\) 呢?考虑两个做法:当 \(i\) 较大时,我们通过容斥枚举加上一个字符以后的串的出现位置,对原串给出一些限制,计算出方案数,复杂度是 \(\Theta(n^22^{n-i})\)。当 \(i\) 较小时,\(2^i\) 地枚举这个后缀是什么,然后在原串中用容斥系数 DP 计算即可。总时间复杂度 \(\mathrm O(n^22^\frac{n}{2})\)