杜教筛入门

假如你要求数论函数 f ( n ) f(n) f(n)的前缀和 F ( n ) F(n) F(n),要求比线性更快的复杂度
如果我们能构造一个数论函数 g ( n ) g(n) g(n)使得 h = f ∗ g h=f*g h=fg( ∗ * 为狄利克雷卷积)的前缀和计算很容易
那么我们有如下变换:
∑ i = 1 n h ( i ) = ∑ i = 1 n ∑ d ∣ i g ( d ) ∗ f ( i d ) = ∑ d = 1 n g ( d ) ∑ d ∣ i f ( i d ) = ∑ d = 1 n g ( d ) ∑ i = 1 ⌊ n d ⌋ f ( i ) = ∑ d = 1 n g ( d ) F ( ⌊ n d ⌋ ) \sum_{i=1}^nh(i)=\sum_{i=1}^n\sum_{d|i} g(d)*f(\frac{i}{d})=\sum_{d=1}^ng(d)\sum_{d|i}f(\frac{i}{d})\\ =\sum_{d=1}^ng(d)\sum_{i=1}^{\lfloor\frac{n}{d}\rfloor}f(i)=\sum_{d=1}^ng(d)F(\left\lfloor\frac{n}{d}\right\rfloor) i=1nh(i)=i=1ndig(d)f(di)=d=1ng(d)dif(di)=d=1ng(d)i=1dnf(i)=d=1ng(d)F(dn)
那么就有
g ( 1 ) F ( n ) = ∑ i = 1 n h ( i ) − ∑ i = 2 n g ( i ) F ( ⌊ n i ⌋ ) g(1)F(n)=\sum_{i=1}^nh(i)-\sum_{i=2}^ng(i)F(\left\lfloor \frac{n}{i} \right\rfloor) g(1)F(n)=i=1nh(i)i=2ng(i)F(in)
然后我们就可以记忆化搜索了
只要我们预处理了前 n 2 3 n^{\frac{2}{3}} n32的值,加上记忆化搜索就可以做到复杂度为 n 2 3 n^{\frac{2}{3}} n32

复杂度证明:
假设我们预处理的是 n \sqrt{n} n 内的数,设 T ( n ) T(n) T(n)为计算 F ( n ) F(n) F(n)的时间

T ( n ) = ∑ i = 1 n T ( i ) + ∑ i = 1 n T ( ⌊ n i ⌋ ) + n = O ( ∑ i = 1 n i ) + O ( ∑ i = 1 n ⌊ n i ⌋ ) + O ( n ) = O ( ∫ 0 n ⌊ n i ⌋ d x ) = O ( n 3 4 ) T(n)=\sum_{i=1}^{\sqrt{n}}T(i)+\sum_{i=1}^{\sqrt{n}}T(\left\lfloor \frac{n}{i} \right\rfloor) +\sqrt{n}\\ =O(\sum_{i=1}^{\sqrt{n}}\sqrt{i})+O(\sum_{i=1}^{\sqrt{n}}\sqrt{\left\lfloor \frac{n}{i} \right\rfloor}) +O(\sqrt{n})\\ =O(\int_0^{\sqrt{n}}\sqrt{\left\lfloor \frac{n}{i} \right\rfloor}dx)=O(n^{\frac{3}{4}}) T(n)=i=1n T(i)+i=1n T(in)+n =O(i=1n i )+O(i=1n in )+O(n )=O(0n in dx)=O(n43)
如果取 n 2 3 n^{\frac{2}{3}} n32
复杂度就为
O ( ∫ 0 n 1 3 ⌊ n x ⌋ d x ) = O ( n 2 3 ) O(\int_0^{n^{\frac{1}{3}}} \sqrt{\left\lfloor \frac{n}{x} \right\rfloor}dx) = O(n^{\frac{2}{3}}) O(0n31xn dx)=O(n32)

具体例题看其他博客啦

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值