前言
Q: min_25筛外面套一个数论分块复杂度是多少的啊QwQ
A:
复杂度不变啊
如果你要在 min25 外面套一个数论分块
说明你根本没有掌握 min25 筛吧
很久很久以前,我非常 naive 地认为只要会 min_25 筛就可以了,洲阁筛这种东西根本不要学,直到碰到了这题。
很显然是一个数论分块里面套一个 min_25 筛,但是非常难受的是这玩意看着复杂度就很不对而且确实慢出天际,于是就有了这篇 blog。
前置姿势
用途和限制
和 min_25 筛限制完全一样(如果有不同之处敬请指正),可以支持在 (mathcal Oleft(frac {n ^ frac 34} {log n} ight)) 的时间复杂度内对所有 (lfloor frac nd floor) 求出 (sum_{i=1}^{lfloor frac nd floor} 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 Sleft( frac n {mathbf P_j^e}, j + 1
ight) - mathbf g(mathbf P_j, |mathbf P|)
ight) + mathbf f(mathbf P_j^{e + 1})
]
可以发现能够使用滚动数组优化。