Link
简要题意:给字符集大小和串长,求border个数的平方的期望
\(n\le 1e5\)
基本的转化就不说了,现在需要对一对\(i,j\)求他们都是\(border\)的方案数。
\(i\)是一个\(border\) \(\Leftrightarrow\) \(n-i\)是一个循环节(可以超出)
同时我们可以知道\(f_i(s)=1\)的概率是\(k^{-i}\)
现在考虑\(n-i=i_1, n-j=j_2\)
枚举\(i,j\)的答案是\(k^{\max (i_1+j_1-n,\gcd (i_1,j_1))-n}\)
proof:
首先考虑\(i_1+j_1 \le n\)的情况,这种情况下显然可以通过\(+j\)之后每次相减做到\(\gcd (i_1,j_1)\)
现在考虑\(i_1+j_1>n\)的时候。不妨设\(i_1>j_1\),同时我们有\(i
现在相当于要统计联通块的个数\(t\)。
将所有点按照\(\mod \gcd(i_1,j_1)\)分组
我们还不难发现,每个点的度数最大是\(2\)。考虑一下度数正好都是\(2\)的时候会发生什么。
首先是\(+i_1\)的边将原图分成了一堆链。之后每个点相当于是在\(i_1/\gcd(i_1,j_1)\)的环上走\(j_1/\gcd(i_1,j_1)\)
因为步长和环长互质,所以这一定是一个大环。
不难发现如果两条边都向左的点度数都是2,那这个图就是一个大环了。
于是我们统计有多少个\(x \mod \gcd(i_1,j_1)\),满足这个分组的店中有至少一个点度数不满即可。
考虑\(>n-i_1\)的点,这些点没有向右连的边,向连的边我们只用关注\(j_1\)的边,如果有则\(i_1\)的边也一定存在。
考虑\(\le j_1\)的点才没有向左连的边,我们考虑这样的区间\((i,j_1]\)。
讨论一下:
如果有\(j_1-i\ge \gcd(i_1,j_1)\)则每个\(x\)都被漏掉了,直接计算边数就能算出连通块个数是\(i_1+j_1-n\)
如果\(j_1-i\le \gcd(i_1,j_1)\)则恰好有\(gcd(i,j)-(j_1-i)\)条边是成环了,算出来\(t=\gcd (i_1,j_1)\)
综上,答案是\(k^{\max (i_1+j_1-n,\gcd (i_1,j_1))-n}\)
这个可以在\(n\log ^2n\)的时间做出来