知识:莫比乌斯反演

定义

\(p_i\)为n的质因数,m为\(p_i\)的个数

\(\mu(1)=1\)

\(\mu(n)=\prod_{i=1}^{m}\mu(p_i^{a_i})=\begin{cases} (-1)^m 当a_1==a_2···==a_n==1 \\0 其他情况\end{cases}\)

定理

\(F(n)和f(n)\)满足\(F(n)=\sum_{d|n}f(d)\)

则有\(f(n)=\sum_{d|n}\mu(d)*F(\frac{n}{d})\)

也可写成\(f(n)=\sum_{d|n}\mu(\frac{n}{d})*F(d)\)

这不废话?

证明

\(f(n)=\sum_{d|n}\mu(d)*F(\frac{n}{d})\)

\(\because F(n)=\sum_{d|n}f(d)\)

\(\therefore f(n)=\sum_{d|n}\mu(d)*\sum_{k|\frac{n}{d}}f(k)\)

\(\therefore f(n)=\sum_{k|n}f(k)*\sum_{d|\frac{n}{k}}\mu(d)\)

其中,莫比乌斯函数满足性质:

\(\sum_{d|n}\mu(d)=\begin{cases} 1 当n==1\\0当n\neq1\end{cases}\)

(性质在下文证)

因此,只有当\(\frac{n}{k}==1即n==k\)

\(\sum_{d|\frac{n}{k}}\mu(d)=1\)

所以

\(f(n)=\sum_{d|n}\mu(d)*F(\frac{n}{d})\)

因为\(\mu\)本身就是一个容斥,也许可以考虑推容斥系数来证明?

性质

性质1

\(\sum_{d|n}\mu(d)=\begin{cases} 1 当n==1\\0当n\neq1\end{cases}\)

看上去就是一个非常优美的结构

可以分类讨论一下,

\(n==1\)的时候,这个性质显然成立

\(n\neq 1\)的时候,

\(n\)进行质因数分解,设\(n=\prod _{i=1}^kp_i^{a_i}\)

那么\(d\)实际上就是在选择\(a_i\)的值,根据\(\mu\)的定义,显然,如果选择的\(a_i>1\)那么\(\mu (d)=0\),故只需要考虑\(a_i=1或0\)的情况,也就是可以看成选或者不选

那么就有\(\sum_{d|n}\mu (d)=\sum_{i=0}^{k}C_k^i(-1)^i\)

这很显然就是一个二项式反演的结构,故值为\(0\)

性质2

\(\mu (n)\)为一个积性函数,即当\(gcd(x,y)=1\),那么有\(\mu(xy)=\mu (x)\mu (y)\)

这性质应该比较显然吧,从定义出发就可以了

性质3

\(F(n)=\sum_{n|d}f(d)\)

\(f(n)=\sum_{n|d}\mu (\frac{d}{n})F(d)\)

需要注意的是,这里的\(d\)不管有没有上限都是成立的

证明方法就跟原本形式的\(\mu\)一样

小技巧

常常会遇到如下式子\(\sum_{i=1}^n \lfloor\frac{n}{i}\rfloor\)

此时肯定不能\(O(n)\)进行处理,可以发现,对于一块之内,\(\lfloor\frac{n}{i}\rfloor\)是一样的

通过理(da)性(biao)证(gui)明(lv),可以发现,每一个块的最后一个的\(i\)一定是\(\lfloor\frac{n}{\lfloor\frac{n}{x}\rfloor}\rfloor\),这里的\(x\)表示一个块中的任意一个\(i\),时间复杂度便成为了\(O(\sqrt n)\)

可以考虑如果是有\(k\)\(\sum\)套在一起,那么时间复杂度则是\(O(k\sqrt n)\),你可以理解为对于每一个单独的\(\sum\),我们将其每一个块的最后一个值在数轴上进行标记,那么时间复杂度取决于数轴上标记的数的个数,故为\(O(k\sqrt n)\)

posted @ 2019-12-13 17:13  loney_s  阅读(140)  评论(0)    收藏  举报