首页 > 其他分享 >杜教筛

杜教筛

时间:2024-01-30 09:13:20浏览次数:14  
标签:lfloor right limits sum rfloor 杜教 left

(抄袭 Alex_Wei)

一、知识点

假设我们先现在希望求出函数 \(f\) 在 \(n\) 处的前缀和 \(s(n)=\sum\limits_{i=1}^nf(i)\),我们构造另一个数论函数 \(g\),设 \(h=f*g\),则

\[\begin{aligned}&\sum\limits_{i=1}^nh(i)\\=&\sum\limits_{ij\leq n}f(i)g(j)\\=&\sum\limits_{d=1}^ng(d)\sum\limits_{i=1}^{\lfloor\frac{n}{d}\rfloor}f(i)\\=&\sum\limits_{d=1}^ng(d)s\left(\left\lfloor\dfrac{n}{d}\right\rfloor\right) \end{aligned} \]

若 \(g,h\) 的前缀和可快速求出,我们就得到了 \(s(n)\) 关于其所有整除值处取值的递推式,即

\[g(1)s(n)=\sum\limits_{i=1}^nh(i)-\sum\limits_{d=2}^ng(d)s\left(\left\lfloor\dfrac{n}{d}\right\rfloor\right) \]

一般 \(f,g\) 均为积性函数,因此 \(g(1)=1\),公式又写为

\[s(n)=\sum\limits_{i=1}^nh(i)-\sum\limits_{d=2}^ng(d)s\left(\left\lfloor\dfrac{n}{d}\right\rfloor\right) \]

一般预处理 \(f\) 及其前缀和到 \(n^{\frac{2}{3}}\) 处,复杂度优化为 \(\mathcal{O}(n^{\frac{2}{3}})\)。

二、例题

P4213 【模板】杜教筛

题意:求 \(\sum \varphi(i)\) 和 \(\sum \mu(i)\),\(n\leq 2^{31}\)。

对于 \(f=\varphi\),构造 \(g=1\),\(f*g=id\)。

对于 \(f=\mu\),构造 \(g=1\),\(f*g=\epsilon\)。

P3768 简单的数学题

发现自己欧拉反演和莫比乌斯反演都学的依托……

对 \(\gcd(i,j)\) 作欧拉反演得 \(\gcd(i,j)=\sum\limits_{d\mid \gcd(i,j)}{\varphi(d)}\)。

所以原式

\[=\sum\limits_{d=1}^n{\varphi(d)\times d^2}\sum\limits_{i=1}^{\lfloor n/d \rfloor}\sum\limits_{j=1}^{\lfloor n/d\rfloor}{ij} \]

后面那坨可以直接计算,对它整除分块,只需快速求出前面那坨的前缀和。

设 \(f=\varphi\times id^2\),构造 \(g=id^2\),那 \(f*g=id^3\),可以使用杜教筛。时间复杂度大约 \(\mathcal{O}(n^{\frac{2}{3}})\)。

标签:lfloor,right,limits,sum,rfloor,杜教,left
From: https://www.cnblogs.com/xishanmeigao/p/17995737

相关文章

  • <学习笔记> 杜教筛
    杜教筛处理数论函数的前缀和问题,可以在低于线性的复杂度里求出\(S(n)=\sum_{i=1}^{n}f(i)\)。对于任意一个数论函数\(g\),必须满足:\[\sum_{i=1}^{n}(f*g)(i)=\sum_{i=1}^{n}\sum_{d\midi}g(d)*d(\frac{i}{d})\]\[=\sum_{d=1}^{n}g(d)\sum_{j=1}^{\lfloor\frac{n}{d}......
  • 杜教筛学习笔记
    原理前置知识:积性函数,狄利克雷卷积。杜教筛可以在亚线性的时间内算出某些函数的前缀和。假设我们要算出函数\(f\)的前缀和,我们要找到函数\(g\),记\(f*g=h\)。杜教筛的前提是\(g\)的前缀和与\(h\)的前缀和都可以快速计算,我们可以快速计算\(f\)的前缀和。首先,我们考......
  • 杜教筛学习笔记
    积性函数定义:对于\(gcd(a,b)=1\),满足\(f(ab)=f(a)f(b)\)的函数。常用的积性函数:\(I(n)=1\)\(\epsilon(n)=[n==1]\)\(id(n)=n\)狄利克雷卷积对于两个数论函数\(f,g\),它们的狄利克雷卷积卷积是:\[(f*g)(n)=\sum_{d|n}f(d)g(\frac{n}{d})\]单位元:\(f*\epsilon=f\)......
  • 杜教筛学习笔记
    杜教筛学习笔记闲话感觉以前根本没学懂杜教筛,于是重学了一遍,写个笔记记录一下。前置知识依赖于迪利克雷卷积、莫比乌斯反演、整除分块相关知识。记号约定及基本性质约定:\(f*g\)表示\(f\)与\(g\)的迪利克雷卷积,即\((f*g)(n)=\sum\limits_{ij=n}f(i)g(j)\)。\(f\cdot......
  • 杜教筛和Min_25筛
    学一遍忘一遍,忘一遍学一遍,生命就是在对抗熵增这两个玩意儿都是用来求积性函数前缀和的(满足对应要求的非积性函数也可以求一下)杜教筛性质要求相对高一些求\(\sum_{i=1}^{n}f(i)\),需要找到\(g(i),h(i)\),满足\(h=f*g\)且\(f,g\)都可以快速求解前缀和令\(S(n)=\sum_{i=1......
  • 杜教筛学习笔记
    杜教筛杜教筛的基本形式对于积性函数\(g(n)\)我们希望求他的前缀和\(S_g(n)\),如果有另一积性函数\(f(n)\)满足\(f*g=h\),且\(fh\)的前缀和易求,那么我们可以通过\(S_f(n)S_h(n)\)快速的求出\(S_g(n)\)。\[\begin{aligned}S_h(n)&=\sum\limits_{i=1}^n\sum\limits_{d|i}f(d)\cdo......
  • 杜教筛
    杜教筛令\(f(x)\)为某个积性函数,\(s(n)=\sum\limits_{i=1}^nf(i)\),我们构造另一干函数\(g\)算\(f*g\)的前缀和。\[\begin{aligned}\sum\limits_{i=1}^n(f*g)(i)=\sum\limits_{i=1}^n\sum\limits_{d|i}g(d)f(\dfrac{i}{d})=\sum\limits_{d=1}^ng(d)\sum\limits_{i=......
  • 杜教筛
     杜教筛起源于中学信息学队员杜瑜皓它结合了三种算法,分别是:整除分块,狄利克雷卷积和线性筛它主要是求解n较大时的积性函数的值它的时间复杂度是O(n^(2/3)),小于O(n)杜教筛在竞赛中很难出现例题:P4213【模板】杜教筛(Sum)这是一道模板题,给出代码#include<bits/stdc++.h>#def......
  • 杜教筛 & Min25 筛
    发现这个东西很容易忘,果然还是理解不够吧,写一篇博客方便以后复习。杜教筛目的是要求\(S(n)=\sum_{i=1}^nf(i)\)。我们需要构造两个函数\(g,h\)满足\(f*g=h\),其中\(h\)是一个积性函数且能快速求和。考虑求\(\sum_{i=1}^n\sum_{d|i}f(d)g(\dfrac{i}{d})=\sum_{i=1}......
  • 杜教筛 & Powerful Number 筛
    迪利克雷卷积对于数论函数\(F\),\(G\),我们定义迪利克雷卷积的结果\(H=F*G\)为\[H_n=\sum_{d\midn}F_dG_\frac{n}{d}\]有些好的性质,比如:对于积性函数\(F\)与\(G\),其迪利克雷卷积\(F*G\)也是积性函数;而在迪利克雷卷积的意义下,积性函数\(F\)的逆也是积性函数(逆满足\(F......