莫比乌斯反演学习笔记
前段时间学习了莫比乌斯反演,现在补一篇学习笔记吧。
Step 1:莫比乌斯函数
首先我们来定义一下莫比乌斯函数
显然,莫比乌斯函数是一个积性函数,所以我们可以用线性筛将他筛出来。
莫比乌斯函数具有很好的容斥性,在一部分题目中会用得到。
Step 2:狄利克雷卷积
话分一头,我们来先学习一下另一个鬼东西:狄利克雷卷积。
引用一下我的另一个blog
Step 3: 莫比乌斯反演
写了这么久终于要开始正式讲解了。
我们定义两个函数
然后我们要去推这么一个柿子:
我们先列出几项:
可以得出:
emmm,好像看不出来什么
接下来我们就要用狄利克雷卷积来证明他。
首先,很明显的是
两边同时卷上个
然后我们知道
证毕。
同样,我们也可证出莫比乌斯反演的另一种形式:
后者更加常用(虽然一般做题都不会生搬硬套上面两个形式)。
我们来举个例子使用莫比乌斯反演来做一做:
给定一个数
first:
暴力枚举,时间
second:
接下来就是用莫比乌斯反演推柿子的时间了。
我们改变枚举顺序,先枚举
我们把
接下来就是见证奇迹的时刻:
这是为什么呢?因为
我们再次改变枚举顺序,先枚举
经过我们的一通瞎操作这个柿子终于变得毒瘤起来了。
我们发现最后的两个
式子变成了这样:
这个柿子呢我们来分析一下它的复杂度,应该为:
这个东西我们把它称为调和级数,计算出来约是等于
其实这个柿子还可以优化,以下有两种优化方法:
1.数论分块:
引理:对于正整数
这个引理本人太菜了不会证明,先放个坑以后填上,但结论是正确的。
那么上面这个
2.继续将柿子优化:
我们可以设
其中我们发现
第一种方法适合单次输出答案,第二种方法适合多测,一般使用第二种方法。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下