【筆記】莫比烏斯反演/篩法
來自\(\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\)
整除分塊的寫法可以直接套用。
在\([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\)。
\[\begin{aligned}\sum\limits_{i=1}^nh(i)=& \sum\limits_{i=1}^{n}\sum\limits_{d|i}g(d)f(\dfrac{i}{d}) \\=& \sum\limits_{d=1}^ng(d)\sum\limits_{i=1}^{\frac{n}{d}}f(i)\\=&\sum\limits_{d=1}^n g(d)S(\dfrac{n}{d})\end{aligned}\]所以有
\[\sum\limits_{i=1}^nh(i)-\sum\limits_{d=2}^n g(d)S(\dfrac{n}{d})=g(1)S(n) \]如果我們選取的\(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\),有:
\[\begin{aligned}h(n)=&\sum\limits_{d|n}f(d)g(\frac{n}{d})\\=&n^2\sum\limits_{d|n}\varphi(d)\\=&n^3\end{aligned} \]\(g,h\)的字首和都非常好求,而\(f\)又是個積性函式,所以直接上杜教篩即可。
好現在你已經精通莫反和基礎篩法了,試著完成下面的練筆吧XD。