首页 > 其他分享 >杜教筛

杜教筛

时间:2022-11-20 11:23:05浏览次数:57  
标签:lfloor frac limits sum rfloor 杜教 aligned

卷积

杜教筛

为了改模拟考试题被迫学的

参考这篇blog

设有积性函数 \(f(x)\), 求 $ \sum\limits_{i = 1}^ n {f(x)} $。

当数据范围太大(如[1, 1e9])时无法直接计算,要考虑使用复杂度小于先线性的做法。

我们想到数论分块,但大多数时候无法直接使用,考虑找个函数 \(g(n)\) 与 \(f(n)\) 卷起来,得到更好维护的式子。

我们设 \(S(n)=\sum\limits_{i=1}^{n}f(i)\)

设 \(g(n)\) 和 \(f(n)\) 卷起来后的前缀和:

\[\begin{aligned} &= \sum\limits_{i = 1}^{n} \sum\limits_{d | i} f(d) g(\frac{i}{d}) \\ &= \sum\limits_{d = 1}^{n}{g(d)} \sum\limits_{i = 1}^{\lfloor \frac{n}{d}\rfloor } f(i) \\ &= \sum\limits_{d = 1}^{n} g(d) S(\left\lfloor \frac{n}{d} \right\rfloor) \end{aligned} \]

考虑 \(g(1)S(n)\) 发现:

\[\begin{aligned} g(1)S(n) &= \sum\limits_{i = 1}^{n}{g(i)S(\left\lfloor\frac{n}{i}\right\rfloor)} - \sum\limits_{i = 2}^{n}{g(i)S(\left\lfloor\frac{n}{i}\right\rfloor)} \\ &= \sum\limits_{i = 1}^{n}{(f * g)(i)} - \sum\limits_{i = 2}^{n}{g(i)S(\left\lfloor\frac{n}{i}\right\rfloor)} \end{aligned} \]

则得到杜教筛的模板式:

\[\begin{aligned} g(1)S(n) &= \sum\limits_{i = 1}^{n}{(f * g)(i)} - \sum\limits_{i = 2}^{n}{g(i)S(\left\lfloor\frac{n}{i}\right\rfloor)} \end{aligned} \]

之后的工作就是找到那个合适的 \(g\) 函数

要求可以在复杂度 \(O(1)\) 或 \(O(\sqrt{n})\)的情况下求出 \(\sum\limits_{i=1}^{n}(f*g)(i)\) ,否则无法递归求出解

找到\(g\)后剩下的就是数论分块加递归求解加记忆化了

标签:lfloor,frac,limits,sum,rfloor,杜教,aligned
From: https://www.cnblogs.com/Eakang/p/16908082.html

相关文章

  • 【XSY4350】摆(行列式,数论,杜教筛)
    题面摆题解首先我们将原矩阵写成\(A+B\),其中\(B\)全是\(C\),那么\(A\)的第\(i\)行就只有其倍数处有值,且\(A_{i,i}=1-C,A_{i,j(i|j\landi\neqj)}=-C\)。那么......
  • P4213 【模板】杜教筛(Sum)
    题目链接P4213【模板】杜教筛(Sum)题目描述给定一个正整数,求\[ans_1=\sum_{i=1}^n\varphi(i)\]\[ans_2=\sum_{i=1}^n\mu(i)\]输入格式本题单测试点内有多组数据。......
  • 【51NOD1847】奇怪的数学题(杜教筛,min_25筛,第二类斯特林数解决自然数幂求和)
    设\(f(n)\)表示\(n\)的次大因数。\[\begin{aligned}&\sum_{i=1}^n\sum_{j=1}^nf(\gcd(i,j))^k\\=&\sum_{d=1}^nf(d)^k\sum_{i=1}^{(n/d)}\sum_{j=1}^{(n/d)}[\gcd(i......
  • BZOJ 4805(欧拉函数求和-杜教筛)
    Description给出一个数字N,求sigma(phi(i)),1<=i<=NInput正整数N。N<=2*10^9Output输出答案。SampleInput10SampleOutput32HINT杜教筛入门#include<bits/stdc++......
  • 杜教筛
    没时间了,记几个公式好了。令\(S(n)=\sum_{i=1}^nf(i)\),则\(g(1)S(n)=\sum_{i=1}^n(f*g)(i)-\sum_{i=\bm2}^nS(\lfloor\fracni\rfloor)\)。e.g.\(f=\mu,S(n)=\sum_{i......
  • 【模板】杜教筛
    #include<stdio.h>#include<math.h>#include<map>#defineullunsignedlonglong#definelltlonglongint#defineuitunsignedintconstintN=5e6+10;int......