【笔记】莫比乌斯反演/筛法
来自\(\texttt{Sharpness}\)的省选复习计划中的莫比乌斯反演/筛法。
线性筛素数,每个数只会被它最小质因子筛掉,借此我们可以线性求出很多积性函数如$\mu\ ,\ \varphi $等。
整除分块,给定\(n\),则\(\left\lfloor\dfrac{n}{i}\right\rfloor\)的取值不超过\(\sqrt{N}\)种,因为\(i\le \sqrt{N}\)时不超过\(\sqrt{N}\)种取值,\(>\sqrt{N}\)时也不超过\(\sqrt{N}\)
所以我们可以把所有\(\left\lfloor\dfrac{n}{i}\right\rfloor\)相同的\(i\)分到一段。总共不超过\(\sqrt{N}\)段。
整除分块的写法可以直接套用。
在\([L,R]\)选出\(N\)个数使得他们的\(\gcd=K\)。不妨将所有数\(/k\),将问题转换为在\([L',R']\)中选取\(N\)个数使得\(gcd=1\)。显然这可以直接暴算了。
题目给出\(R-L\le10^5\),考虑更简单的方法。我们可以先求出\(f[i]\)表示公约数为\(i\)的方案数,再通过\(f[k\times i],k\in N^{+}\),容斥求出最大公约数为\(i\)的方案数。
迪利克雷卷积
\(h=f*g\),则有\(h(n)=\sum\limits_{d|n}f(d)g(\dfrac{n}{d})\) 。
性质 \(1\):若\(f,g\)为积性函数,则\(f*g\)也为积性函数。
证明:
- 如果$p\perp q $,则 \(w|pq\) 与 \(w=uv,u|p\land v|q\)一一对应 。因为\(w\)的每一个质因子可以唯一分配到 \(p\) 或者 \(q\) 中。
- 所以\(h(p\times q)=\sum\limits_{w|pq}f(w)g(\dfrac{pq}{w})=\sum\limits_{u|p,v|q}f(u)f(v)g(\dfrac{p}{u})g(\dfrac{q}{v})=h(p)h(q)\)
反演
性质 \(2\):\(\mu *1=\epsilon\)
应用:\(\begin{aligned} \sum\limits_{i=1}^{n}\sum\limits_{j=1}^m[\gcd(i,j)=1]=& \sum\limits_{i=1}^{n}\sum\limits_{j=1}^m\sum\limits_{d|i,j}\mu(d)\\=&\sum\limits_{d=1}^{\min(n,m)}\mu(d)\left\lfloor\dfrac{n}{d}\right\rfloor\left\lfloor\dfrac{m}{d}\right\rfloor \end{aligned}\)
性质 \(3\):\(\varphi*1=\rm Id\)
应用:\(\begin{aligned} \sum\limits_{i=1}^{n}\sum\limits_{j=1}^m\gcd(i,j)=& \sum\limits_{i=1}^{n}\sum\limits_{j=1}^m\sum\limits_{d|i,j}\varphi(d)\\=&\sum\limits_{d=1}^{\min(n,m)}\varphi(d)\left\lfloor\dfrac{n}{d}\right\rfloor\left\lfloor\dfrac{m}{d}\right\rfloor \end{aligned}\)
莫比乌斯反演模板题。
利用性质 \(2\) ,用线性筛预处理\(\mu\),然后整除分块可以做到\(\rm O(T\sqrt{N})\)
经典 \(\texttt{trick}\) : \(\sigma(ij)=\sum\limits_{a=1}^{i}\sum\limits_{b=1}^{j}[\gcd(a,b)=1]\) 。
然后利用性质\(2\)求解即可。
杜教筛
杜教筛用来在优于线性的时间复杂度内求出积性函数的前缀和。
如果我们需要求积性函数 \(f\) 的前缀和 \(S\),我们可以找一个合适的函数 \(g\),令\(h=f*g\)。
所以有
如果我们选取的\(g\)函数能使得\(\sum h(i)\)快速求出,我们可以将这个问题递归分解下去。由问题\(S(n)\)分解到\(S(\dfrac{n}{d})\)。并不难得到一个时间复杂度为\(\rm O(N^{\frac{3}{4}})\)。
考虑优化,我们可以将所有\(\le M\) 的 \(S(i)\) 全部筛出来,不难证得当\(M=N^{\frac{2}{3}}\)时,时间复杂度最优且为\(\rm O(N^{\frac{2}{3}})\)。
利用\(\mu,\varphi\)函数的性质。\(\mu *1=\epsilon\),\(\varphi*1=\rm Id\),其中函数 \(1,\epsilon,\rm Id\) 的前缀和都可以 \(\rm O(1)\) 求得,直接套用上面的公式即可。
转化一下,发现我们需要求\(\sum\limits_{i=1}^{n}i^2\varphi(i)\)。
根据套路,我们令\(f(n)=n^2\varphi(n)\),\(g(n)=n^2\)。令\(h=f*g\),有:
\(g,h\)的前缀和都非常好求,而\(f\)又是个积性函数,所以直接上杜教筛即可。
好现在你已经精通莫反和基础筛法了,试着完成下面的练笔吧XD。