2022.7.14 闲话
闲话,随便写写吧 .
Divisor Summatory Function 定义为
\[T(n)=\sum_{i=1}^n\left\lfloor\dfrac ni\right\rfloor
\]
非常简单吧 .
后面讨论的均为多组询问 .
记号约定:\(O(f(n)) - O(g(n))\) 表示 \(O(f(n))\) 复杂度预处理,\(O(g(n))\) 复杂度询问 .
Algorithm -1:暴力,\(O(1)-O(n)\) .
Algorithm 0:每次整除分块,\(O(1)-O(\sqrt n)\) .
Algorithm 1:\(O(n)\) 递推,\(O(n)-O(1)\)(洛谷 P3708).
这表明 \(\displaystyle T(n)=\sum_{i=1}^n\sigma_0(i)\) .
Algorithm 2
另一方面,这个是反比例函数下整点个数,根据双曲线对称性,有
\[T(n)=2\sum_{i=1}^{\sqrt n}\left\lfloor\dfrac ni\right\rfloor-\left\lfloor\sqrt n\right\rfloor^2
\]
不过并不能加快复杂度,只能让实现更容易一点 .
其实有魔法可以做到 \(O(n^{1/3}) - O(1)\),见 link .
我水完了 .
高维情况可以看上面的论文 .
End
以下是博客签名,正文无关
本文来自博客园,作者:Jijidawang,转载请注明原文链接:https://www.cnblogs.com/CDOI-24374/p/16479781.html
版权声明:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议(CC BY-NC-SA 4.0)进行许可。看完如果觉得有用请点个赞吧 QwQ