2024.2.16 闲话
歌:ココロスイート - KIRATORA feat. 初音ミク .
放闲话里吧,记一下这个 . 竟然真的用到了 .
记 \(\mathrm Sf\) 是 \(f\) 的前缀和,除法默认整除 .
Dirichlet 双曲线法:\(f*g=h\implies\)
\[\mathrm Sh(n)=\sum_{i=1}^{\sqrt n}f(i)\mathrm Sg(n/i)+\sum_{i=1}^{\sqrt n}g(i)\mathrm Sf(n/i)-\mathrm Sf(\sqrt n)\mathrm Sg(\sqrt n)
\]
这个问题其实就是整除分块一般求解的问题 . 可以发现这个用来做块筛卷积也是可以的,复杂度是 \(O(n^{3/4})\) .
移项可以得到非递归杜教筛:\(f*g=h\implies\)
\[\mathrm Sf(n)=\mathrm Sh(n)-\sum_{i=1}^{\sqrt n}f(i)\mathrm Sg(n/i)-\sum_{i=2}^{\sqrt n}g(i)\mathrm Sf(n/i)+\mathrm Sf(\sqrt n)\mathrm Sg(\sqrt n)
\]
其实这个大概可以做半在线 Dirichlet 卷积了 .
上面 \(\sqrt n\) 的取整方向一样即可 .
这里有一个关键优化是整除 \(\lfloor\frac nx\rfloor=\lfloor n\cdot\frac1x\rfloor\),倒数可以预处理因为分母理论上只到根号级别,每次做浮点乘法比整数除法快 .
如果能预处理小的部分可以到 \(O(n^{2/3})\) 左右,一般应该是个 \(\tilde O(n^{2/3})\) 的形态 .
这样做杜教筛的部分就会快很多了 .
不过常数明显优秀的算法却没什么人写(可能是都没听过这种). 比较矛盾的现象 .
摆
以下是博客签名,正文无关
本文来自博客园,作者:Jijidawang,转载请注明原文链接:https://www.cnblogs.com/CDOI-24374/p/18017310
版权声明:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议(CC BY-NC-SA 4.0)进行许可。看完如果觉得有用请点个赞吧 QwQ