这是一篇有关莫比乌斯反演的总结
莫比乌斯反演是什么?
我也说不清
其实做完了这么多题后,我对莫反的理解就只是两个式子
然后在学莫反的过程中了解到了许许多多的套路,有用
最基础的,两个式子
我们假设有两个函数(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}^nsum_{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 简单的数学题(杜教筛的推法以及一些闻所未闻的公式)
正好十道题,见证我初学莫比乌斯反演的历程
从未结束
从此,莫比乌斯反演的学习告一段落
要开始学习其它的东西了,以追赶他人的步伐
现在,继续努力!