杜教筛复杂度证明

我们实际上求的是这玩意

T ( n ) = n + ∑ i = 1 n ( T ( i ) + T ( n i ) ) T(n)=\sqrt{n}+\sum_{i=1}^{\sqrt{n}}(T(i)+T(\frac{n}{i})) T(n)=n +i=1n (T(i)+T(in))

我们只需要考虑
T ( n ) = n + ∑ i = 1 n ( i + n i ) T(n)=\sqrt{n}+\sum_{i=1}^{\sqrt{n}}(\sqrt i+\sqrt\frac{n}{i}) T(n)=n +i=1n (i +in )
对于之后的项,如

T ( n ) = n 1 4 + ∑ i = 1 n 1 4 ( i + n i ) T(\sqrt n)=n^{1\over4}+\sum_{i=1}^{n^{1\over4}}(\sqrt i+\sqrt\frac{\sqrt n}{i}) T(n )=n41+i=1n41(i +in )
只有 O ( n 1 4 ) O(n^{1\over4}) O(n41), n \sqrt{n} n 个加起来也就 O ( n 3 4 ) O(n^{3\over4}) O(n43)

我们要求的实际上是

∑ i = 1 n ( i + n i ) \sum_{i=1}^{\sqrt{n}}(\sqrt i+\sqrt\frac{n}{i}) i=1n (i +in )

前者明显小于后者,可以忽略

∑ i = 1 n n i \sum_{i=1}^{\sqrt{n}}\sqrt\frac{n}{i} i=1n in

当积分算

∫ 0 n n x \int_{0}^{\sqrt{n}}\sqrt\frac{n}{x} 0n xn

为了方便后面叙述,我们设一个通式,即

S ( m ) = ∫ 0 m n x S(m)=\int_{0}^{m}\sqrt\frac{n}{x} S(m)=0mxn

g ( x ) = n x g(x)=\sqrt\frac{n}{x} g(x)=xn

运用你丰富的数学知识,得到原函数

f ( x ) = n x f(x)=\sqrt{nx} f(x)=nx

所以所求为

S ( n ) = f ( n ) = n 3 4 S(\sqrt n)=f(\sqrt n)=n^{3 \over 4} S(n )=f(n )=n43

如果我们预处理出前 k k k个(假装 k > n k>\sqrt n k>n ),复杂度为

∑ i = 1 n k n i = S ( n k ) \sum_{i=1}^{\frac{n}{k}}\sqrt\frac{n}{i}=S(\frac{n}{k}) i=1knin =S(kn)

代入上面的结论

S ( n k ) = f ( n k ) = n k S(\frac{n}{k})=f(\frac{n}{k})=\frac{n}{\sqrt{k}} S(kn)=f(kn)=k n

加上预处理后总复杂度 O ( k + n k ) O(k+\frac{n}{\sqrt{k}}) O(k+k n)

k = n 2 3 k=n^{2 \over3} k=n32时有理论最优复杂度 O ( n 2 3 ) O(n^{2\over3}) O(n32)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值