本文内容概要:

  • \(A=\sum\limits_{i=1}^n\dfrac1{\sqrt i}=1+\dfrac1{\sqrt2}+\cdots+\dfrac1{\sqrt n}\)

    \(O(\sqrt n)\) ,将给出一种只需使用初中数学知识的放缩

  • \(B=\sum\limits_{i=1}^n\sqrt i=1+\sqrt2+\cdots+\sqrt n\)

    \(O(n\sqrt n)\) ,使用积分进行放缩

  • \(C=\sum\limits_{i=1}^n\dfrac1i=1+\dfrac12+\cdots+\dfrac1n\)

    著名的调和级数,\(O(\ln n)\) ,主要介绍一种证明下界的方法

  • 杜教筛时间复杂度证明

    不再讲解算法,阅读前请确保你已经事先了解杜教筛

一些证明来自于我的数学老师,在此表示感谢


\(A=\sum\limits_{i=1}^n\dfrac1{\sqrt i}\)

考虑放缩: \(\dfrac1{\sqrt i+\sqrt{i+1}}<\dfrac1{2\sqrt i}<\dfrac1{\sqrt{i-1}+\sqrt i}\)

两边裂个项:\(\sqrt{i+1}-\sqrt i<\dfrac1{2\sqrt i}<\sqrt i-\sqrt{i-1}\)

求和:\(\sum\limits_{i=1}^n\sqrt{i+1}-\sqrt i<\sum\limits_{i=1}^n\dfrac1{2\sqrt i}<\sum\limits_{i=1}^n\sqrt i-\sqrt{i-1}\)

即 \(\sqrt{n+1}-1<\dfrac12A<\sqrt n\)

故 \(2\sqrt{n+1}-2<A<2\sqrt n\)


\(B=\sum\limits_{i=1}^n\sqrt i\)

注意到

\[\int_0^n\sqrt x\cdot dx<\sum_{x=1}^n\sqrt x<\int_0^n\sqrt{x+1}\cdot dx
\]

放个图,应该能帮助理解

直接积出来,得到 \(\dfrac23n^{1.5}<B<\dfrac23\left[(n+1)^{1.5}-1\right]\)

这种处理技巧对应的专有名词是积分判别法


\(C=\sum\limits_{i=1}^n\dfrac1i\)

类似地,用积分容易证明 \(\ln(1+n)<C<1+\ln n\) ,这里不再赘述,读者可自行完成

(严格地说,\(n=1\) 时是能取到上界的,但问题不大)

下面给出另一种 \(C>\ln(n+1)\) 的证明方法

考虑一个结论: \(x-1\ge\ln x\) (当且仅当 \(x=1\) 时取等)

似乎是高中数学常见结论?不证了

令 \(x=2,\dfrac32,\dfrac43,\cdots,\dfrac{n+1}n\) ,代入并求和:

\[\sum_{i=1}^n\left(\dfrac{i+1}i-1\right)>\sum_{i=1}^n\ln\dfrac{i+1}i
\]
\[\sum_{i=1}^n\dfrac1i>\ln\left(\prod_{i=1}^n\dfrac{i+1}i\right)
\]
\[C>\ln(n+1)
\]

证毕

如需了解更多 请自行百度调和级数


杜教筛时间复杂度证明

不妨考虑最简单的情形: \(S(n)=\sum\limits_{i=2}^nS\left(\left\lfloor\dfrac ni\right\rfloor\right)\) ,使用整除分块递归求解

注意,时间复杂度写成 \(T(n)=O(\sqrt n)+\sum\limits_{i=2}^{\sqrt n}(T(i)+T(\frac ni))\) 的证明都是错的。

\(T(200000)\) 已经超过 1e8 了。自行体会。

证明应当考虑到杜教筛是有记忆化的

于是整个算法中,每个 \(S(n/i)(i\in\mathbb N)\) 都恰被计算了一次

于是时间复杂度为 \(O(~\sum\limits_{j=n/i}\!\sqrt j~)\)

\(j\le \sqrt n\) 的部分显然可以忽略,考虑剩下的

\[\sum_{i=1}^{\sqrt n}\sqrt{\dfrac ni}=\sqrt n\sum_{i=1}^{\sqrt n}\dfrac1{\sqrt i}\approx \sqrt n\cdot2\sqrt{\sqrt n}=2n^{3/4}
\]

于是时间复杂度就是 \(O(n^{3/4})\)

我们还可以优化,用线性筛预处理 \(S(1)\sim S(k) (k\ge \sqrt n)\)

这样就可以忽略 \(j\le k\) 的部分

\[\sum_{i=1}^{n/k}\sqrt{\dfrac ni}\approx \dfrac{2n}{\sqrt k}
\]

时间复杂度就是 \(O\left(k+\dfrac n{\sqrt k}\right)\) ,当 \(k\) 为 \(O(n^{2/3})\) 级别时取到最优 \(O(n^{2/3})\) 。

一些求和式的估算 & 杜教筛时间复杂度证明的更多相关文章

  1. 牛客练习赛84F-牛客推荐系统开发之下班【莫比乌斯反演,杜教筛】

    正题 题目链接:https://ac.nowcoder.com/acm/contest/11174/F 题目大意 给出\(n,k\)求 \[\sum_{i_1=1}^n\sum_{i_2=1}^n.. ...

  2. hdu6607 min25筛+杜教筛+伯努利数求k次方前缀和

    推导过程类似https://www.cnblogs.com/acjiumeng/p/9742073.html 前面部分min25筛,后面部分杜教筛,预处理min25筛需要伯努利数 //#pragma ...

  3. ●杜教筛入门(BZOJ 3944 Sum)

    入门杜教筛啦. http://blog.csdn.net/skywalkert/article/details/50500009(好文!) 可以在$O(N^{\frac{2}{3}})或O(N^{\f ...

  4. [复习]莫比乌斯反演,杜教筛,min_25筛

    [复习]莫比乌斯反演,杜教筛,min_25筛 莫比乌斯反演 做题的时候的常用形式: \[\begin{aligned}g(n)&=\sum_{n|d}f(d)\\f(n)&=\sum_ ...

  5. [基本操作] Mobius 反演, Dirichlet 卷积和杜教筛

    Dirichlet 卷积是两个定义域在正整数上的函数的如下运算,符号为 $*$ $(f * g)(n) = \sum_{d|n}f(d)g(\frac{n}{d})$ 如果不强调 $n$ 可简写为 $ ...

  6. 51nod 1220 约数之和【莫比乌斯反演+杜教筛】

    首先由这样一个式子:\( d(ij)=\sum_{p|i}\sum_{q|j}[gcd(p,q)==1]\frac{pj}{q} \)大概感性证明一下吧我不会证 然后开始推: \[ \sum_{i=1 ...

  7. Mobius 反演与杜教筛

    积性函数 积性函数 指对于所有互质的整数 aaa 和 bbb 有性质 f(ab)=f(a)f(b)f(ab)=f(a)f(b)f(ab)=f(a)f(b) 的数论函数. 特别地,若所有的整数 aaa ...

  8. 洛谷 P6860 - 象棋与马(找性质+杜教筛)

    题面传送门 首先我们来探究一下什么样的 \((a,b)\) 满足 \(p(a,b)=1\).不难发现只要点 \((1,0)\) 能够到达,那么网格上所有点都能到达,因为由于 \((1,0)\) 能够到 ...

  9. 51nod 1244 莫比乌斯函数之和(杜教筛)

    [题目链接] http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1244 [题目大意] 计算莫比乌斯函数的区段和 [题解] 利 ...

随机推荐

  1. cosface: large margin cosine loss for deep face recognition

    目录 概 主要内容 Wang H, Wang Y, Zhou Z, et al. CosFace: Large Margin Cosine Loss for Deep Face Recognition ...

  2. 【odoo】关于odoo二开模块规范的一点思考

    老韩头的开发日常 ☞ [好书学习]系列 背景 作为丙方,完成了甲方的二开需求.因此,在设计二开模块的时候,考虑的是当时所列的需求清单,并整合到一个二开模块中.完成交付后,客户评价蛮好的.因此,成功的为 ...

  3. 使用 JavaScript 的 HTML 页面混合、JavaScript 文件引用和 HTML 代码嵌入 3 种方式在 HTML 页面上打印出“点击我进入到百度首页”的超链接

    查看本章节 查看作业目录 需求说明: 使用 JavaScript 的 HTML 页面混合.JavaScript 文件引用和 HTML 代码嵌入 3 种方式在 HTML 页面上打印出"点击我进 ...

  4. Hadoop组件启停命令和服务链接汇总

    1.启停命令 Zookeeper zkServer.sh start zkServer.sh stop/status/restart zkCli.sh -server IP:Port Hadoop(h ...

  5. x86-2-保护模式(protect mode)

    x86-2-保护模式(protect mode) 引入保护模式的原因: 操作系统负责计算机上的所有软件和硬件的管理,它可以百分百操作计算机的所有内容.但是,操作系统上编写的用户程序却应当有所限制,比如 ...

  6. 自定义djangorestframework-simplejwt的验证表

    django restframework-simplejwt默认是通过调用django的get_user_model方法来得到验证表的表名,然后再通过查询id来验证是否有这个用户. 当需要自定义用户表 ...

  7. Shell 中的 expect 命令

    目录 expect 介绍 expect 安装 expect 语法 自动拷贝文件到远程主机 示例一 示例二 示例三 示例四 expect 介绍 借助 expect 处理交互的命令,可以将交互过程如 ss ...

  8. Linux上天之路(十二)之服务管理

    主要内容 服务介绍 独立服务 非独立服务 1. 服务介绍 服务:常驻在内存中的程序,且可以提供一些系统或网络功能,那就是服务. 计算机中的系统服务有很多,比如: apache提供web服务 ftp提供 ...

  9. Python网络编程之网络基础

    Python网络编程之网络基础 目录 Python网络编程之网络基础 1. 计算机网络发展 1.1. OSI七层模型 1.2. 七层模型传输数据过程 2. TCP/IP协议栈 2.1 TCP/IP和O ...

  10. nginx代理图片上传以及访问 nginx 图片上传完整版

    nginx代理图片上传 首先需要利用nginx代理图片访问参考 https://www.cnblogs.com/TJ21/p/12609017.html 编写接受文件的controller 1 @Po ...