莫比乌斯反演 做题记录
來自Peterwuyihong 的題單。
前置知識
前置芝士1 數論分塊
UVA11526 H(n)
P2261 [CQOI2007]余數求和
P2260 [清華集訓2012]模積和
- 其中有一個式子需要注意一下:\[\sum_{i=1}^n\sum_{j=1}^m\left\lfloor\dfrac{n}{i}\right\rfloor\left\lfloor\dfrac{m}{i}\right\rfloor=\left(\sum_{i=1}^n\left\lfloor\dfrac{n}{i}\right\rfloor\right)\times\left(\sum_{j=1}^m\left\lfloor\dfrac{m}{i}\right\rfloor\right) \]
P3935 Calculating
- 最重要的一部分就是計算 \(1\) 到 \(n\) 內每個數的約數個數之和,這樣不是很好做,考慮枚舉約束。\[\sum_{i=1}^{n}\sigma_0(i)=\sum_{d=1}^{n}\left\lfloor\dfrac{n}ze8trgl8bvbq\right\rfloor \]
前置芝士2 線性篩
P2158 [SDOI2008]儀仗隊
SP526 DIV - Divisors
P4626 一道水題 II
SP22461 SMALL - Smallest Number
CF1017F The Neutral Zone論如何選擇篩法
以及你的算法優化技巧與數學能力
P6810 「MCOI-02」Convex Hull 凸包
P5495 Dirichlet 前綴和
P6788 「EZEC-3」四月櫻花
莫比烏斯反演
就是把一個看起來只能暴力算的柿子化成一個可以一下子算出來或者數論分塊可以算出來的東西
以下都默認 \(n\le m\)
形式1
\[\begin{aligned} \sum_{i=1}^n\sum_{j=1}^m[\gcd(i,j)=1]&=\sum_{i=1}^n\sum_{j=1}^m\sum_{x|i}\sum_{x|j}\mu(x)\\ &=\sum_{x=1}^n\mu(x)\sum_{i=1}^n\sum_{j=1}^m[x|i~\texttt{and}~x|j]\\ &=\sum_{x=1}^n\mu(x)\left\lfloor {n\over x}\right\rfloor\left\lfloor {m\over x}\right\rfloor \end{aligned} \]數論分塊即可 \(O(n)\) 預處理, \(O(\sqrt n)\) 單次詢問。
形式2
\[\begin{aligned} \sum_{i=1}^n\sum_{j=1}^m\gcd(i,j)&=\sum_{i=1}^n\sum_{j=1}^m\sum_{x|i}\sum_{x|j}\varphi(x)\\ &=\sum_{x=1}^n\varphi(x)\sum_{i=1}^n\sum_{j=1}^m[x|i~\texttt{and}~x|j]\\ &=\sum_{x=1}^n\varphi(x)\left\lfloor {n\over x}\right\rfloor\left\lfloor {m\over x}\right\rfloor \end{aligned} \]數論分塊即可 \(O(n)\) 預處理, \(O(\sqrt n)\) 單次詢問。
形式3
\[\begin{aligned} \sum_{i=1}^n\sum_{j=1}^mf(\gcd(i,j))&=\sum_{d=1}^nf(d)\sum_{i=1}^n\sum_{j=1}^m[\gcd(i,j)=d]\\ &=\sum_{d=1}^nf(d)\sum_{i=1}^{\lfloor{n\over d}\rfloor}\sum_{j=1}^{\lfloor{m\over d}\rfloor}[\gcd(i,j)=1]\\ &=\sum_{d=1}^nf(d)\sum_{k=1}^{\lfloor{n\over d}\rfloor}\mu(k)\left\lfloor {n\over dk}\right\rfloor\left\lfloor {m\over dk}\right\rfloor\text{,然后令}dk=T\\ &=\sum_{T=1}^n\left\lfloor {n\over T}\right\rfloor\left\lfloor {m\over T}\right\rfloor\sum_{d|T}f(d)\mu\left({T\over d}\right) \end{aligned} \]數論分塊即可 \(O(n)\) 預處理, \(O(\sqrt n)\)單次詢問。
莫比烏斯反演形式千千萬,要多做才能做出感覺來。
莫比烏斯反演優化多次/單次詢問
瘋狂 LCM
LCMSUM - LCM Sum(2倍經驗)
loj LCMSUM(3倍經驗)
P2398 GCD SUM
P1390 公約數的和(2倍經驗)
SP21615 NAJPWG - Playing with GCD
SP3871 GCDEX - GCD Extreme
AT5310 [ABC162E] Sum of gcd of Tuples (Hard)(難度綠???我大不服
莫反加整除分塊
P3455 [POI2007]ZAP-Queries
P2522 [HAOI2011]Problem b
SP26017 GCDMAT - GCD OF MATRIX
SP26045 GCDMAT2 - GCD OF MATRIX (hard)(卡常,慎入!!
VLATTICE - Visible Lattice Points
杜教篩
\(\sum_{i=1}^nf(i),f\) 為積形函數
主要思路就是構造一個積形函數\(g\),使得它本身前綴和與
\[\sum_{i=1}^n\sum_{d|i}f(d)g\left(\frac{i}ze8trgl8bvbq\right) \]好算一點
那么我們有
\[\sum_{i=1}^n\sum_{d|i}f(d)g\left(\frac{i}ze8trgl8bvbq\right)=\sum_{d=1}^ng(d)\sum_{k=1}^{\lfloor\frac{n}ze8trgl8bvbq\rfloor}f(k)\\ g(1)\sum_{k=1}^nf(k)=\sum_{i=1}^n\sum_{d|i}f(d)g\left(\frac{i}ze8trgl8bvbq\right)-\sum_{d=2}^ng(d)\sum_{k=1}^{\lfloor\frac{n}ze8trgl8bvbq\rfloor}f(k) \]遞歸計算即可,當然可以預處理,具體見wiki寫的
Min25篩
學會這個就能搞定一切積形函數前綴和了
題單放不下了我就放在這里
P1835 素數密度(請小題大做)
P5493 質數前綴統計(min25前置芝士)
P5325 【模板】Min_25篩(板子)
SP20173 DIVCNT2 - Counting Divisors (square)(1倍經驗)
SP20174 DIVCNT3 - Counting Divisors (cube)(2倍經驗)
SP34096 DIVCNTK - Counting Divisors (general)(3倍經驗)
SP19975 APS2 - Amazing Prime Sequence (hard)(有技巧的min25,需要熟練了解其精髓)
SP22549 DIVFACT4 - Divisors of factorial (extreme)(用min25處理中間問題)
歐拉計劃分區(可能要FQ
中文翻譯
歐拉計劃388
歐拉計劃625
總結
以上是生活随笔為你收集整理的莫比乌斯反演 做题记录的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 行列式、LGV、矩阵树学习笔记
- 下一篇: 林青霞个人资料简历 林青霞简介