杜教筛之逆运算

前言:

下面介绍的这种方法并不常见,但是非常的有用
准确来说,我是来拓荒的,所以有什么问题请一定指出

前置技能:

积性函数
狄利克雷卷积
一定式子转化能力

其实对杜教筛知识点方面要求并不是很高

简单介绍几种常用积性函数:

\(1.\text{欧拉函数:}\phi(x)=\text{ 1—x与x互质的数的个数}\)
\(2.\text{莫比乌斯函数:}\mu(x)\text{ 这个函数定义难以描述,可以自行查找}\)
\(3.\text{约数个数:}d(x)=\sum_{d|x}1\)
\(4.\text{约数和:}\sigma(x)=\sum_{d|x}d\)
\(5.\text{恒等函数:}I(x)=1\)
\(6.\text{单元函数:}id(x)=x\)
\(7.\text{元函数:}\epsilon(x)=[x=1]\)

狄利克雷卷积(*)

对于两个数论函数 \(f(x),g(x)\)
它们的卷积形式为: \(f*g(x)=\sum_{d|x}f(d)\times g(\frac{x}{d})\)

卷积满足
交换律: \(f*g(x)=g*f(x)\)
结合律: \((f*g)*h(x)=f*(g*h)(x)\)
分配律: \((f+g)*h(x)=f*h(x)+g*h(x)\)

且 积性函数*积性函数 为 积性函数

牢记下面公式:

\(d(x)=I*I(x)\)
\(\sigma(x)=I*id(x)\)
\(id(x)=I*\phi(x)\)
\(\epsilon(x)=I*\mu(x)\)
\(f*\epsilon(x)=f(x)\)

进入正题:

首先介绍杜教筛的式子:

杜教筛之所以是杜教筛,因为存在这样的式子:

\[\sum_{i=1}^nf*g(i)=\sum_{i=1}^nf(i)\sum_{j=1}^{\lfloor\frac{n}{i}\rfloor}g(j)\]

证明:

\[\sum_{i=1}^nf*g(i)=\sum_{i=1}^n\sum_{d|i}f(\frac id)g(d)\]
\[=\sum_{i=1}^n\sum_{d=1}f(d)g(\frac id)[d|i]\]
\[=\sum_{d=1}^nf(d)\sum_{i=1}^{\lfloor\frac nd\rfloor}g(i)\]

引入:

考虑这样一道题:

\[\sum_{i=1}^ni\sum_{j=1}^{\lfloor\frac{n}{i}\rfloor}\mu(j)\]

常见做法:
预处理\(\mu(x)\)前缀和,然后整除分块,时间复杂度\(O(T\sqrt n+n)\)

但是若\(T\le10^7,n\le10^7\),妥妥的TLE
观察杜教筛的式子,发现

\[\sum_{i=1}^ni\sum_{j=1}^{\lfloor\frac{n}{i}\rfloor}\mu(j)=\sum_{i=1}^nid*\mu(i)=\sum_{i=1}^n\phi(i)\]

也就是说此式子与\(\phi(x)\)前缀和等价
那么我们只用预处理\(\phi(x)\)前缀和,\(O(1)\)回答询问即可,时间复杂度\(O(T+n)\)

这就是杜教筛逆运算最基础的应用

进阶应用1:

考虑这样一道题:

\[\sum_{i=1}^n\lfloor\frac ni\rfloor\mu*\phi(i)\]

常见做法:
积性函数筛,筛出\(\mu*\phi(x)\ O(n\log\log n)\)并求前缀和
对于每次询问,整除分块
时间复杂度\(O(n\log\log n+T\sqrt n)\)

同样的若\(T\le 10^7,n\le10^7\),妥妥的TLE
此时又来观察杜教筛式子,如果我们把\(g(x)\)函数特殊化为\(I(x)=1\),可以得到

\[\sum_{i=1}^nI*f(i)=\sum_{i=1}^n\lfloor\frac{n}{i}\rfloor f(i)\]

把\(f(x)\)替换为\(\mu*\phi(x)\)不就是我们要求的式子吗,于是化简为

\[\sum_{i=1}^n\lfloor\frac ni\rfloor\mu*\phi(i)=\sum_{i=1}^nI*\mu*\phi(i)=\sum_{i=1}^n\phi(i)\]

那么接下来就与前一道相同了,时间复杂度\(O(T+n)\)

进阶应用2:

考虑这样一道题:

\[\sum_{i=1}^n\lfloor\frac ni\rfloor^2\mu(i)\]

好像很熟悉的亚子。。。
常见做法:
处理\(\mu(x)\)前缀和,整除分块,时间复杂度\(O(n+T\sqrt n)\)

然后被\(T\le 10^7,n\le10^7\)毒瘤数据卡死

然而继续观察杜教筛式子,把\(g(x)\)函数特殊化为\(id(x)=x\),可以得到

\[\sum_{i=1}^nid*f(i)=\sum_{i=1}^nf(i)\sum_{j=1}^{\lfloor\frac{n}{i}\rfloor}id(j)\]
\[=\sum_{i=1}^nf(i)\frac{\lfloor\frac{n}{i}\rfloor\times(\lfloor\frac{n}{i}\rfloor+1)}{2}\]
\[=\frac{\sum_{i=1}^n\lfloor\frac{n}{i}\rfloor^2 f(i)+\sum_{i=1}^nI*f(i)}{2}\]

移项得

\[\sum_{i=1}^n\lfloor\frac{n}{i}\rfloor^2 f(i)=2\times\sum_{i=1}^nid*f(i)-\sum_{i=1}^nI*f(i)\]

将\(f(x)\)替换为\(\mu(x)\),得

\[\sum_{i=1}^n\lfloor\frac{n}{i}\rfloor^2 \mu(i)=2\times\sum_{i=1}^n\phi(i)-1\]

那么接下来就与前两道相同了,时间复杂度\(O(T+n)\)

当然你要这么做我也没办法:

\[\sum_{i=1}^n\lfloor\frac ni\rfloor^2\mu(i)=\sum_{i=1}^n\sum_{j=1}^n[gcd(i,j)=1]=2\times\sum_{i=1}^n\phi(i)-1\]

总结:

总而言之,三个式子比较重要

\[1.\sum_{i=1}^nf*g(i)=\sum_{i=1}^nf(i)\sum_{j=1}^{\lfloor\frac{n}{i}\rfloor}g(j)\]

\[2.\sum_{i=1}^nI*f(i)=\sum_{i=1}^n\lfloor\frac{n}{i}\rfloor f(i)\]

\[3.\sum_{i=1}^n\lfloor\frac{n}{i}\rfloor^2 f(i)=2\times\sum_{i=1}^nid*f(i)-\sum_{i=1}^nI*f(i)\]

后记:

可以看看这篇题解,应该会对此方法有更好理解

因为网络上暂时还没找到过这种方法,所以以上全是博主yy出来的
有木有用请由自己掂量,有错误请一定指出
关于这种方法有新的拓展也请一定提出

原文地址:https://www.cnblogs.com/MYsBlogs/p/11445713.html

时间: 2024-10-09 07:20:47

杜教筛之逆运算的相关文章

【bzoj 4176】 Lucas的数论 莫比乌斯反演(杜教筛)

Description 去年的Lucas非常喜欢数论题,但是一年以后的Lucas却不那么喜欢了. 在整理以前的试题时,发现了这样一道题目“求Sigma(f(i)),其中1<=i<=N”,其中 表示i的约数个数.他现在长大了,题目也变难了. 求如下表达式的值: 一行一个整数ans,表示答案模1000000007的值. Sample Input 2 Sample Output 8 HINT 对于100%的数据n <= 10^9. 题解: 解锁新技能:杜教筛. 再复习一下: 若$F(n)=\s

【51nod-1239&amp;1244】欧拉函数之和&amp;莫比乌斯函数之和 杜教筛

题目链接: 1239:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1239 1244:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1244 杜教筛裸题,不过现在我也只会筛这俩前缀和... $$s(n)=\sum _{i=1}^{n}f(i)$$ 那么就有: $$\sum_{i=1}^{n}f(i)\lfloor \frac{n}{i} \

杜教筛 学习总结

看了看唐老师的blog,照猫画虎的做了几道题目,感觉对杜教筛有些感觉了 但是稍微有一点难度的题目还是做不出来,放假的时候争取都A掉(挖坑ing) 这篇文章以后等我A掉那些题目之后再UPD上去就好啦 由于懒得去写怎么用编辑器写公式,所以公式就准备直接copy唐老师的啦 首先积性函数和完全积性函数什么的就不再多说了 列举常见的积性函数: 1.约数个数函数和约数个数和函数 2.欧拉函数phi 3.莫比乌斯函数mu 4.元函数e 其中e(n)=[n==1] 5.恒等函数I 其中I(n)=1 6.单位函数

【BZOJ4916】神犇和蒟蒻 杜教筛

[BZOJ4916]神犇和蒟蒻 Description 很久很久以前,有一只神犇叫yzy; 很久很久之后,有一只蒟蒻叫lty; Input 请你读入一个整数N;1<=N<=1E9,A.B模1E9+7; Output 请你输出一个整数A=\sum_{i=1}^N{\mu (i^2)}; 请你输出一个整数B=\sum_{i=1}^N{\varphi (i^2)}; Sample Input 1 Sample Output 1 1 题解:哎?上面的那个东西好像一直是1?(废话),然后 设j=i/d,

【bzoj4176】Lucas的数论 莫比乌斯反演+杜教筛

题目描述 去年的Lucas非常喜欢数论题,但是一年以后的Lucas却不那么喜欢了. 在整理以前的试题时,发现了这样一道题目“求Sigma(f(i)),其中1<=i<=N”,其中 表示i的约数个数.他现在长大了,题目也变难了. 求如下表达式的值: 其中f(ij)表示ij的约数个数. 他发现答案有点大,只需要输出模1000000007的值. 输入 第一行一个整数n. 输出 一行一个整数ans,表示答案模1000000007的值. 样例输入 2 样例输出 8 题解 莫比乌斯反演+杜教筛 首先有个神奇

杜教筛进阶+洲阁筛讲解+SPOJ divcnt3

Part 1:杜教筛进阶在了解了杜教筛基本应用,如$\sum_{i=1}^n\varphi(i)$的求法后,我们看一些杜教筛较难的应用.求$\sum_{i=1}^n\varphi(i)*i$考虑把它与$id$函数狄利克雷卷积后的前缀和.$$\sum_{i=1}^n\sum_{d|i}\varphi(d)*d*\frac id=\sum_{i=1}^ni^2$$枚举$T=\frac id$,原式化为$$\sum_{T=1}^nT\sum_{d=1}^{\lfloor\frac nT\rfloor}

【51Nod 1237】最大公约数之和 V3 莫比乌斯反演+杜教筛

题意 求$\sum_{i=1}^{n}\sum_{j=1}^{n}(i,j)$ 枚举约数 $$ \begin{align} ans &=\sum_{d=1}^{n}\sum_{i=1}^{n}\sum_{j=1}^{n}[(i,j)=d] \ &=\sum_{d=1}^{n}\sum_{i=1}^{\lfloor \frac{n}{d} \rfloor}\sum_{j=1}^{\lfloor \frac{n}{d} \rfloor}[(i,j)=1] \ \end{align} $$ 利用

[日常摸鱼]杜教筛

因为博主比较菜所以可能一些地方写的有问题或者不清楚,以及我的废话有点多- 在这里先感谢下小伙伴ww @MoebiusMeow 的帮助~ 参考资料: [1]浅谈一类积性函数的前缀和(skywalkert) [2]杜教筛--省选前的学习1(_rqy) (下面约定$[p]$表示满足条件$p$时为1不满足为0,以及下面说的函数都是数论函数) 前置技能(一些定义) 数论函数:若$f:Z^{+} \rightarrow C$,则称$f$为数论函数 积性函数:若一个数论函数$f(n)$对于所有$m_1 \bo

莫比乌斯函数与杜教筛

前人的文章已经很详尽了,这里只作一点补充. 莫比乌斯反演与莫比乌斯函数入门资料:https://wenku.baidu.com/view/fbec9c63ba1aa8114431d9ac.html 讲的非常清楚,这里稍微补充一下: 1.虽然考试肯定不会考,但是对于定理的证明还是应该大概了解一下的.关于欧拉函数φ与莫比乌斯函数μ,由于它们都是积性函数,所以很多性质都可以用类似数学归纳法的方法证明.过程是:(1)对于一个性质证明在x为素数是成立 (2)对于素数p和一个正整数a,设此性质对a与p均成立