「学习笔记」洲阁筛

前言

Q: min_25筛外面套一个数论分块复杂度是多少的啊QwQ

A:

复杂度不变啊

如果你要在 min25 外面套一个数论分块

说明你根本没有掌握 min25 筛吧

很久很久以前,我非常 naive 地认为只要会 min_25 筛就可以了,洲阁筛这种东西根本不要学,直到碰到了这题

很显然是一个数论分块里面套一个 min_25 筛,但是非常难受的是这玩意看着复杂度就很不对而且确实慢出天际,于是就有了这篇 blog。

前置姿势

min_25 筛(?)

用途和限制

和 min_25 筛限制完全一样(如果有不同之处敬请指正),可以支持在 \(\mathcal O\left(\frac {n ^ \frac 34} {\log n}\right)\) 的时间复杂度内对所有 \(\lfloor \frac nd \rfloor\) 求出 \(\sum_{i=1}^{\lfloor \frac nd \rfloor} \mathbf f(i)\),在求单点时常数比 min_25 筛更大。

算法流程

Part I

和 min_25 筛的第一部分完全一样,所以本文沿用 min_25 筛中 \(\mathbf g(n, i)\) 的定义。

Part II

\(\mathbf S(n, j) = \sum_{i=1}^n [\mathrm{minp}(i) \geq \mathbf P_j \or i \in \mathbf P]\ \mathbf f(i)\),那么有 \(\mathbf S(n, |\mathbf P| + 1) = \mathbf g(n, |\mathbf P|)\)

转移就是枚举 \(\mathbf P_j\) 的次数:

\[\mathbf S(n, j) = \mathbf S(n, j + 1) + \sum_{\mathbf P_j^{e + 1} \leq n} \mathbf f(\mathbf P_j^e) \left(\mathbf S\left( \frac n {\mathbf P_j^e}, j + 1 \right) - \mathbf g(\mathbf P_j, |\mathbf P|)\right) + \mathbf f(\mathbf P_j^{e + 1}) \]

可以发现能够使用滚动数组优化。

posted @ 2021-02-17 22:08  xgzc  阅读(170)  评论(0编辑  收藏  举报