杜教筛
- 杜教筛是用来在非线性时间内求积性函数的前缀和
前置知识
-
积性函数(莫比乌斯函数,欧拉函数。。。)
-
狄利克雷卷积
杜教筛
-
假设当前要求积性函数的
-
那么我们找一个合适的另一个积性函数
-
那么
-
那么
-
最后这个式子可以当作一个 公式
-
所以现在就需要找到一个合适的积性函数
使得可以快速的求出这两个部分,后面的部分可以用数论分块优化,前面的部分一般可以 算 -
那么一般的复杂度就是
,如果预处理出长度为 的前缀和,那么可以证明复杂度为 -
还有的优化就是在递归的时候记忆化
-
首先转换成
-
这里有个套路,设
,把 提前 -
因为我们需要构造出我们熟悉的数论函数,所以这个和
函数连在一起的分块结构必须分离 -
-
将后面的一坨看成
,那么就是 -
前面的部分可以用数论分块优化,后面的
考虑用非线性的杜教筛 -
对于
-
考虑找一个积性函数,最好将
变成 ,所以需要先将 消掉,设 -
那么
-
那么就可以直接套杜教筛,
-
, ,那么整体的复杂度就可以做到 -
虽然外层套了层数论分块,但是我们记忆化了,最后只会有
个点值会被算到,所以整体的复杂度在里面的杜教筛,所以可以看成
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】