首页 > 其他分享 ><学习笔记> 杜教筛

<学习笔记> 杜教筛

时间:2024-01-21 19:58:33浏览次数:21  
标签:lfloor frac epsilon sum rfloor 杜教 id

杜教筛

处理数论函数的前缀和问题,可以在低于线性的复杂度里求出 \(S(n)=\sum_{i=1}^{n} f(i)\)。

对于任意一个数论函数 \(g\),必须满足 :

\[\sum_{i=1}^{n}(f*g)(i)=\sum_{i=1}^{n} \sum_{d \mid i} g(d)*d(\frac{i}{d}) \]

\[=\sum_{d=1}^{n} g(d) \sum_{j=1}^{\lfloor \frac{n}{d} \rfloor} f(j)=\sum_{d=1}^{n}g(d)S(\lfloor \frac{n}{d} \rfloor) \]

那么可以得到:

\[g(1)S(n)=\sum_{i=1}^{n} g(i)S(\lfloor \frac{n}{i} \rfloor)-\sum_{i=2}^{n} g(i)S(\lfloor \frac{n}{i} \rfloor) \]

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

时间复杂度最小为 \(n^{\frac{2}{3}}\)。

一般情况下,可以设出方便求前缀的 \(g\) 和 \(f*g\),然后进行递归求解。

例如根据 \(I(n)=1\),\(id(n)=n\),\(\epsilon(n)=[n=1]\)

单位元 \(\epsilon\) 满足 \(f * \epsilon= f\)

根据狄利克雷卷积得到几个性质:

  1. \(\mu * I =\epsilon\)

  2. \(\varphi * I = id\)

  3. \(\mu * id= \varphi\)

让 \(g\) 等于以上这些等等。

标签:lfloor,frac,epsilon,sum,rfloor,杜教,id
From: https://www.cnblogs.com/jinjiaqioi/p/17978192

相关文章

  • 杜教筛学习笔记
    原理前置知识:积性函数,狄利克雷卷积。杜教筛可以在亚线性的时间内算出某些函数的前缀和。假设我们要算出函数\(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......
  • 【学习笔记】杜教筛
    如果我们要求一个积性函数\(f(x)\)的前缀和,可以用杜教筛在\(O(n^{\frac{2}{3}})\)的复杂度求出。具体地,构造函数\(g(x)\)和函数\(h(x)\),使得$h=f*g$,要求的式子是\(S(n)=\sum\limits_{i=1}^{n}f(i)\)。开始推式子。\[\sum\limits_{i=1}^{n}h(i)=\sum\limits_{i=1}^{......