2022.11.19 鲜花

SoyTony 给我一道题:

(约定:fk(x)=f(x)k

LOJ528 「LibreOJ β Round #4」求和

i=1nj=1mμ2(gcd(i,j))

1n,m107 .

数据范围是我编的,我其实并不知道 LOJ 上数据范围到底是多少 .

首先不妨令 nm,根据经典莫反套路可以得到答案其实就是

i=1nnimi(μμ2)(i)

然后整除分块,问题变成如何快速求 μμ2 .

Algorithm 1(时空复杂度 Θ(n)

注意到 μμ2 是积性函数,于是线性筛即可 Θ(n) .

Algorithm 2(时空复杂度 Θ(n)

SoyTony 是大智者

首先要求的就是

dnμ(d)μ2(nd)

注意到 n 只能形如 p2q,其中 pq,否则答案必然是 0 .

于是显然 p2 分别给两个 μ 否则没有贡献,于是答案就变成

dqμ(pd)μ2(pqd)

因为 μ2 显然是完全积性函数,而 pd,于是可以拆开变成

μ3(p)dqμ(d)μ2(qd)

然而 μ3 就是 μ,右边 μ2(qd) 因为 qd 是 square-free 的所以必然等于 1,于是又可以变成

μ(p)dqμ(d)

这样这个求和就是一个非常平凡的莫反 μ1=ε .

则答案就是 μ(p)[q=1] .

如果 q=1 则必然 n=p2,于是答案也可以转写为 μ(n)[nZ] .

这样做一个根号值域的线性筛 μ 即可 . 时空复杂度 Θ(n) .

Algorithm 3(时空复杂度 Θ(n)

SoyTony 曾言道:“有没有什么组合意义做法。”

考虑 μ2μ 其实就是 μ2 的 Dirichlet 卷积逆,也就是我们要找到一个函数 f,使得 f1=μ2 .

然后接下来的步骤我发现其实就是 Algorithm 4 的神奇公式 μ2(x)=d2|xμ(d) .

然后这样也能得到 (μμ2)(n)μ(n)[nZ],后面同 Algorithm 2 .

Algorithm 4(时空复杂度 Θ(n)

有神奇公式 μ2(x)=d2|xμ(d),证明略 .

于是直接从原题入手,

i=1nj=1mμ2(gcd(i,j))=i=1nj=1md2|gcd(i,j)μ(d)=d=1nnd2md2μ(d)

那么直接线性筛算就好了,时空复杂度仍然是 Θ(n) .

posted @   yspm  阅读(75)  评论(5编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
😅​
点击右上角即可分享
微信分享提示