CF 1025 E : Expected Value Again

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<j\)\(j < i_1\)

现在相当于要统计联通块的个数\(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\)的时间做出来

posted @ 2019-08-22 15:18  jerome_wei  阅读(232)  评论(0编辑  收藏  举报