XJ 5.7 T2

方法一:我会科技!

\[\begin{aligned} ans&=\sum^{n}_{d=1}\mu(d)\sum^{\lfloor\frac{n}{d}\rfloor}_{i=1}\sigma(i)^2 \end{aligned} \]

对于后面那个东西可以发现它可以直接上Min_25。

加上记忆化之后可以发现最多只有 \(O(\sqrt{n} \times \frac{\sqrt{n}}{\ln n})=O(\frac{n}{\ln n})\) 个状态。

外加上Min_25 的小常数,稍微松一下可能可以通过。

直接上科技!

集训队论文中有提到过Min_25的 \(O((\frac{n}{\ln n})^\frac{2}{3})\) 的高速实现方法,并且还可以求若干个点的值,即只需要一次就可以解决后面那个\(\sum\) 了。

时间复杂度 \(O(\sqrt{n}+(\frac{n}{\ln n})^\frac{2}{3})\) ,可以轻松通过。

方法二:我会推式子!

\(f(n)=\sum\limits^{}_{d|n}\mu(d)\sigma(\frac{n}{d})^2\),那么答案等价于求 \(f\) 的前缀和。

首先不难发现 \(g(n)\) 是一个积性函数,对于这一类函数求前缀和马上可以想到杜教Min_25。

把后面的 \(\sigma\) 拆开,可以得到 \(f(n)=\sum\limits_{d|n}\mu(\frac{n}{d})\prod\limits^{}_{p^{k_{i}}_{i}|d}(k_{i}+1)^2\)

考虑到 \(\mu\) ,它实际上是在做一个容斥,而且它有一个比较优秀的性质,对于 \(\mu(n)\) ,如果存在大于等于两次的质因子,那么它为0。

那么,按照Min_25 的思想,也可以对 \(f(n)\) 后面的东西分类。

具体地说,可以分:

\[\begin{aligned} f(n)&=f(\frac{n}{p^{k_{i}}_{i}})\times[(k_{i}+1)^2+\mu(p_{i})(k_{i}-1+1)^2]\\ &=f(\frac{n}{p^{k_{i}}_{i}})(2k_{i}+1)\\ &\vdots\\ &=\prod_{p_{i}^{k_{i}}|n}(2k_{i}+1) \end{aligned} \]

对于 \(f(n)\) ,它有以下两点性质:

  • \(f(p)=3\)

  • \(f(p^k)=2k+1\)

剩下来的,就只按照套路做dp了。

虽然复杂度没有直接推式子的优秀,但是鉴于Min_25的常数非常小,所以还是能非常轻松地跑过去的。

并且可以发现, \(f(n)=\sigma(n^2)\) ,于是可以拿着这种做法再去水三道黑题。

posted @ 2021-05-07 15:01  krimson  阅读(45)  评论(0)    收藏  举报