Loading

整除分块

引入

这道题:UVA11526 H(n)

就相当于求这个柿子:\(\boxed{\sum\limits_{i=1}^{n}\left\lfloor\dfrac{n}{i}\right\rfloor}\)

我们有\(O(\sqrt n)\)的做法——整除分块

求的是\(\left\lfloor\dfrac{n}{i}\right\rfloor\)

因为是向下取整,所以有些值是一样的

比如\(n=5\)时,\(\left\lfloor\dfrac{n}{3}\right\rfloor\)\(\left\lfloor\dfrac{n}{4}\right\rfloor\)\(\left\lfloor\dfrac{n}{5}\right\rfloor\)的结果一样

不难发现,这些值是像块状一样分布的\(qwq\)

每一个值相同的块的\(i\)的最大值一定是\(\left\lfloor\dfrac{n}{\left\lfloor\dfrac{n}{i}\right\rfloor}\right\rfloor\)

可以写出以下代码qwq(附解释):

那么时间复杂度呢?

解:\(\left\lfloor\dfrac{n}{i}\right\rfloor\)的取值最多只有\(2\sqrt n\)种,理由如下

\(1\leqslant i \leqslant \sqrt n\)时,\(i\)的取值有\(\sqrt n\)种,则上述式子最多只有\(\sqrt n\)种取值
\(\sqrt n \leqslant i \leqslant n\)时,上述式子取值最多也有\(\sqrt n\)
总共最多有\(2\sqrt n\)种取值

由于代码枚举了\(2\sqrt n\)次取值,复杂度便为\(\sqrt n\)

比暴力好了许多\(qwq\)

posted @ 2020-06-26 20:21  Into_qwq  阅读(281)  评论(0编辑  收藏  举报