CF1205E Expected Value Again
太nb了这题
这题完全体现了我的 数学推导 能力有多差。
中间还被 alpha 教育了,我不会算这个复杂度/kk
\[O(\sum_{i=1}^{n} \sum_{j|i}\sum_{k|\frac{i}{j}}1)=O(n\log^2n)
\]
还是考虑拆平方的期望,我们发现即为 \(\sum_{i,j}f(i)f(j)\),其中 \(f(t)\) 代表有一个长度为 \(t\) 的 border。于是我们想要计算的是每两个 border 有几个串有这么长的 border。每个 border 对应一个 period,而每个 period 即对应唯一的一个长度为 \(n\) 的串。所以我们可以把 border 转换为 period。
period 的性质即为每个点 \(s[t]=s[t+i]\),所以我们不妨把相同的点连边,最后连通块的数量即为一个不确定的值,设为 \(c\),那么贡献即为 \(k^c\)。
结论:\(c=\max(\gcd(i,j),i+j-n)\)。
第一个部分即为弱周期引理,第二个部分感性理解一下(画个图)就能发现。
根据一些等价我们得到下面的式子。(上面是字符串和图论的部分,下面就全是数学推导了)
\[ans\times k^n=\sum_{i=1}^{n-1}\sum_{j=1}^{n-1}k^{\max{\gcd(i,j), i+j-n}}
\]
然后有一个不太能扩展的 \(O(n\log^2n)\) 做法。
考虑枚举 \(\gcd(i,j)\) 和 \(i+j\),然后计算同时满足 \(i,j\) 组数。
\[\sum_{s=2}^{2n-2}\sum_{d|s}\sum_{i=1}^{n-1}\sum_{j=1}^{n-1}[\gcd(i,j)=d][i+j=s]\\
=\sum_{s=2}^{2n-2}\sum_{d|s}\sum_{i=1}^{n-1}[\gcd(i,s-i)=d]\\
=\sum_{s=2}^{2n-2}\sum_{d|s}\sum_{i=1}^{[\frac{n-1}{d}]}[\gcd(i,\frac{s}{d}-i)=1]\\
=\sum_{s=2}^{2n-2}\sum_{d|s}\sum_{i|\frac{s}{d}}\mu(i)\sum_{j=ik}1
\]
然后上面的式子有一个缺陷,就是 \(i,j\) 的范围没有表示。
\[1\le i\le n-1\\
1\le s-i\le n-1\\
\Rightarrow
s+1-n\le i\le s-1\\
\]
然后令 \(a=\max\{1,\frac{s}{d}-[\frac{n-1}{d}]\},b=\min\{\frac{[n-1]}{d},\frac{s}{d}-1\}\),有最终的式子
\[\sum_{s=2}^{2n-2}\sum_{d|s}\sum_{i|\frac{s}{d}}\mu(i)([\frac{b}{i}]-[\frac{a-1}{i}])
\]
还有一个常见的 \(O(n\log{n})\) 算法和一个 \(O(n)\) 算法。看懂了但是不想写了(咕咕有空就补),可以在下面的题解里看到。