【总结】莫比乌斯反演
这是一篇有关莫比乌斯反演的总结
莫比乌斯反演是什么?
我也说不清
其实做完了这么多题后,我对莫反的理解就只是两个式子
然后在学莫反的过程中了解到了许许多多的套路,有用
最基础的,两个式子
我们假设有两个函数\(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_{n|d}f(d)$$
那么$$f(n)=\sum_{n|d}\mu(\frac{d}{n})F(d)$$
其实式子很容易记
个人认为莫反真正有用的也就这两个式子了,那些性质理解了就行了,至于证明,OI从来没有证明
所以本篇不记录那些性质和证明,主要记录莫反到底怎么用,还有一些套路
莫比乌斯反演有什么用?怎么用?
- 1 莫反是什么时候用的
- 一般用于推数论公式之中。有一些题目是数学方面的,题目含义转换后可能答案就是一个式子的值,可是那个式子在一定复杂度内算不出来怎么办?那么就要不断降低或省去那些需要枚举的地方。这就是我们俗称的推式子
- 而在推式子的过程中就有可能需要使用莫反。大部分需要用莫反的标志是所谓的\(gcd\)
- 2 函数的设计
- 函数的设计是一个关键点,也就是定义里的\(F(n)\)和\(f(n)\)
- 当你推式子被\(gcd\)之类的卡住了的时候,不妨试一试莫反,设计出来的\(f(n)\)一般就是你被卡住的那一段式子,至于\(F(n)\),必须要和\(f(n)\)相呼应,即要满足两对式子的条件,这样才能反演。感觉上,第二对式子,就是倍数关系那一对用得多一些
- 设计出的\(F(n)\)最好能在进行一定推导后变成形式非常简单的东东,最好是\(O(1)\)计算的,反演给\(f(n)\)就很好用,不然反演就没有什么实质性的用处(当然不排除一些特殊用法)
- 3 \(\mu\)的处理
- 通常情况下,因为\(\mu\)是积性函数,所以可以套路线性筛(积性函数筛的例子,可以见后文的[BZOJ 2693 jzptab]例题)
- 4 最终求解
- 式子推完,我们一般可以得到一个整除分块的东西和一个需要前缀和的东西,而前缀和一般\(O(n)\)预处理
- 整除分块的代码千篇一律:
for(register int i=1;;)
{
if(i>n)break;
int j=n/(n/i);
ans+=......;
i=j+1;
}
一些很强的小套路
- 设\(d(x)\)为\(x\)约数个数和,那么\(d(nm)=\sum_{i|n}\sum_{j|m}[gcd(i,j)=1]\)
- 经常性的改变枚举方式,只要枚举东西的本质相同,就放心去变(例如:\(\sum_{n|d}\)是枚举\(n\)的倍数,然后使用\(d\),那么我们不如变成\(\sum_{k=1}^{limit_{up}}\)枚举\(d\)是\(n\)的\(k\)倍,然后使用\(d\)变成使用\(nk\))
- 当式子中(多半是分母)出现两个字母\(id\)相乘的时候,不妨设\(T=id\),然后把式子变成主要关于枚举\(T\)的
- 当式子中有东西可以变成整除分块,后面前缀和的部分不能在复杂度内处理完的时候,多半会用杜教筛,不妨试一试
- \(\sum_{i=1}^n\sum_{n|d}\)暴力求是\(nlnn\)的,而不是\(n^2\)
- 式子中如果有\(\sum_{...}^{...}\sum_{...}^{...}[...]\),那么我们只需要枚举满足\([...]\)的对数就可以了,其它的都是没有贡献的
- 记住一些强大的公式,比如[洛谷 P3768 简单的数学题]中链接的那些
这些套路可能直接说并不是很清楚,可以借助后文的例题去理解
几道练习题
这些都是我最近练习的题目,有些很经典,有些很近代
大体上应该是按由易到难的顺序,而且题目之间可能会有关联,也会按顺序循序渐进地出现套路与方法
所以建议按照给出的顺序观看
注意函数的设计和式子的推法
(点击链接,看具体内容)
- BZOJ 2820 YY的GCD(这题会有几个套路和筛\(\mu\)的方法)
- 洛谷 P3455 [POI2007]ZAP-Queries
- BZOJ 2301 [HAOI2011]Problem b(这题和容斥结合在一起)
- BZOJ 3994 [SDOI2015]约数个数和(详细的推式子过程)
- BZOJ 3930 [CQOI2015]选数
- BZOJ 3529 [Sdoi2014]数表(题目要转化才能推式子,推完式子后又要用数据结构才能维护真正的答案)
- BZOJ 2154 Crash的数字表格(难一点的\(F(n)\)与\(f(n)\)函数,具备详细的推导)
- BZOJ 2693 jzptab(上一题的升级版,有积性函数的筛法)
- BZOJ 4816 [Sdoi2017]数字表格(从熟悉的\(\sum\)变成了\(\prod\),如何继续用反演?)
- 洛谷 P3768 简单的数学题(杜教筛的推法以及一些闻所未闻的公式)
正好十道题,见证我初学莫比乌斯反演的历程
从未结束
从此,莫比乌斯反演的学习告一段落
要开始学习其它的东西了,以追赶他人的步伐
现在,继续努力!