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})\) 的形态 .

这样做杜教筛的部分就会快很多了 .

不过常数明显优秀的算法却没什么人写(可能是都没听过这种). 比较矛盾的现象 .

posted @ 2024-02-16 17:28  Jijidawang  阅读(136)  评论(6编辑  收藏  举报
😅​