【51nod1220】约数之和

题目要求的柿子是:

\[\large \sum_{i=1}^n\sum_{j=1}^n\sigma(ij) \]

小证明:

\(i\) 选了的 \(j\) 就必须在“不选集合”中选择“不选”,\(i\) 没选的 \(j\) 的 “不选集合” 中就可选可不选。

这样做显然是一一对应的,而且肯定满足 \(i\) 的“选集合”和 \(j\) 的“不选集合”互质。

首先根据结论:

\[\large \sum_{i=1}^n\sum_{j=1}^n\sum_{x\vert i}\sum_{y\vert j}[\gcd(x,y)=1]\dfrac{xj}{y} \]

先枚举 \(x,y\)

\[\large \sum_{x=1}^n\sum_{y=1}^n\sum_{x\vert i}\sum_{y\vert j}[\gcd(x,y)=1]\dfrac{xj}{y} \]

把只和 \(x,y\) 相关的提出来:

\[\large \sum_{x=1}^n\sum_{y=1}^n[\gcd(x,y)=1]\dfrac{x}{y}\lfloor\frac nx\rfloor\sum_{y\vert j}j \]

\(\varepsilon=I*\mu\) 换一下:

\[\large \sum_{x=1}^n\sum_{y=1}^n\sum_{d\vert \gcd(x,y)}\mu(d)\dfrac{x}{y}\lfloor\frac nx\rfloor\sum_{y\vert j}j \]

套路先枚举 \(d\) ,同时观察到最后那个柿子就是个等差数列:

\[\large \sum_{d=1}^n\mu(d)\sum_{x=1}^{\lfloor\frac nd\rfloor}\sum_{y=1}^{\lfloor\frac nd\rfloor}\frac{x}y\lfloor\frac n{xd}\rfloor yd\dfrac{\lfloor\frac {n}{yd}\rfloor(\lfloor\frac {n}{yd}\rfloor+1)}{2} \]

化简一下:

\[\large \sum_{d=1}^n\mu(d)\sum_{x=1}^{\lfloor\frac nd\rfloor}\sum_{y=1}^{\lfloor\frac nd\rfloor}xd\lfloor\frac n{xd}\rfloor \dfrac{\lfloor\frac {n}{yd}\rfloor(\lfloor\frac {n}{yd}\rfloor+1)}{2} \]

把该提出来的提出来:

\[\large \sum_{d=1}^n\mu(d)d\sum_{x=1}^{\lfloor\frac nd\rfloor}x\lfloor\frac n{xd}\rfloor \sum_{y=1}^{\lfloor\frac nd\rfloor}\dfrac{\lfloor\frac {n}{yd}\rfloor(\lfloor\frac {n}{yd}\rfloor+1)}{2} \]

接下来可以考虑怎么解决后面两部分,先说最后一个柿子,为了方便,设 \(\lfloor\dfrac nd\rfloor\to n\)

\[\large \sum_{i=1}^n\frac{\lfloor\frac{n}{i}\rfloor(\lfloor\frac{n}{i}\rfloor+1)}{2} \]

把后面的柿子换回等差数列的形式,然后交换求和顺序:

\[\large\sum_{i=1}^n\sum_{j=1}^{\lfloor\frac ni\rfloor}j=\sum_{j=1}^nj\sum_{i=1}^{\lfloor\frac nj\rfloor}1=\sum_{i=1}^ni\lfloor\frac ni\rfloor \]

这时我们再来看前面一个柿子,发现这两个柿子现在不是一样的吗?

那么我们现在只需要解决前面的柿子再平方一下就行了。

还是为了方便,设 \(\lfloor\dfrac nd\rfloor\to n\)

\[\large \sum_{i=1}^ni\lfloor\frac ni\rfloor \]

考虑其实际意义:\(\large i\lfloor\frac ni\rfloor\) 的意义就是在 \([1,n]\) 当中,\(i\) 作为因数对其所有倍数的因数和的贡献。

那么对于 \([1,n]\) 中所有这样的 \(i\) ,自然有:

\[\large \sum_{i=1}^ni\lfloor\frac ni\rfloor=\sum_{i=1}^n\sigma_{1}(i) \]

那么现在原式就变成了:

\[\large Ans=\sum_{d=1}^n\mu(d)d\left(\sum_{i=1}^{\left\lfloor\frac n i\right\rfloor}\sigma_1(i)\right)^2 \]

很容易发现后面的柿子是个整除分块,但是也要计算 \(\sigma_1\) 的前缀和,而前面则是要计算 \(\mu(d)d\) 的前缀和。

考虑杜教筛。

先考虑 \(\mu(d)d\) ,似乎带 \(d\) 的柿子都可以给它卷个 \(id\) 使得这个 \(d\) 被消掉,于是我们试一下:

\[\large \sum_{i=1}^n\sum_{d\vert i}d\cdot\mu(\frac id)\frac id=\sum_{i=1}^ni(\mu*I)(i)=\sum_{i=1}^ni[i=1]=1 \]

非常简洁,那么考虑 \(id\) 的前缀和好求吗?非常好求,就是等差数列,那么我们就可以筛出 \(\mu(d)d\) 了,接下来考虑 \(\sigma_{1}\)

想了一万年,发现并没有什么好的函数来筛 \(\sigma_{1}\) ,但是我们发现,其实如果我们直接爆算,那么就是一个除法分块的复杂度(还记得 \(\large \sum\limits_{i=1}^n\sigma_{1}(i)=\sum\limits_{i=1}^ni\lfloor\frac ni\rfloor\) 吗)。

但是!这里有个非常高妙的做法:

考虑杜教筛是怎么做到 \(O(n^{\frac{2}{3}})\) 复杂度的:先线性筛出 \(n^{\frac 23}\) 的前缀和,然后剩下的部分除法分块以及递归!

那么我们直接线性筛出这个函数的 \(n^{\frac23}\) ,然后对剩下部分除法分块,复杂度也可以近似为 \(n^{\frac 23}\) ,甚至比杜教筛还要优!(因为还省掉了递归的复杂度,虽然在主定理中这不是瓶颈)

那么就结束了,时间复杂度 \(O(n^{\frac 23})\)

posted @ 2021-09-02 21:35  __Anchor  阅读(35)  评论(0编辑  收藏  举报