min25 筛
min25 筛法(又名拓展埃筛)
解决一类积性(?)函数前缀和问题。
下文中如无特殊说明,\(p\) 均指代质数,\(n\) 的范围为 \(1\le n \le 10^{10}\)
Lucy dp
例:求 \(\pi(n), n \le 10^{12}\)。
记 \(G(n,j)\) 表示 \(i\) 为素数或 \(i\) 的最小质因子 \(> p_j\) 的 \(f_2(i)\) 之和,容斥下,则有转移:
加入 \(p_j^2 \le n\) 的剪枝后复杂度是 \(O(\sum_{i=1}^{\sqrt n} \frac{\sqrt{n / i}}{\log n/i}) = O(\frac{n^{\frac{3}{4}}}{\log n})\) 的。
来拓展这个算法,由于 \(\pi(n) = \sum_{p} 1(p)\),根据转移式,只要数论函数 \(f\) 是完全积性的,所有 \(\sum_{p \ge n} f(p)\) 都可以求。
Min 25
还是考虑埃筛的思路,用最小质因子划分等价类,记 \(S(n,j)\) 表示最小质因子大于 \(p_j\) 的 \(f(x)\) 和,那么答案就是 \(S(n,0) + f(1) = S(n,0) + 1\)。
因为埃筛只要用 \(\le \sqrt n\) 的素数去筛,那我们把这件事情用到 \(S(n,j)\) 的求解上,我们记 \(h(n)\) 表示所有 \(\le n\) 的素数的 \(f\) 值和,这里如果 \(f(p)\) 可以表示为多个完全积性函数的线性组合就可以用 lucy dp 求出。
那么有 $$S(n,j) = \sum_{k > j, p_k \le \sqrt n, p_k^e \le n} f(p_k^e)([e>1] + S(\lfloor \frac{n}{p_k^e} \rfloor, k)) + h(n) - h(p_j)$$
min25 告诉我们,\(S\) 这里如果暴力 dfs 的话,复杂度是 \(O(n^{1-\epsilon})\) 的,而且常数非常小。
例题
洛谷模板题:
有 \(f(p) = p^2 - p\),用 lucy dp 求出质数处 \(f_1(x)=x, f_2(x)=x^2\) 点值前缀和。
loj 6181:
考虑若 \(\mu(n) = 0\) 则 \(f(n) = 0\),否则推下式子即可发现 \(f\) 在素数处为 \(1\),其他有值情况为 \(-1\)。
那么有答案为 \(\sum_k \mu(k)^2 - 2\sum_i [i \texttt{ is prime}]\)。后面那个东西显然可以 min25,但前面这个东西其实可以不用 min25。
考虑 \(\sum_k \mu(k)^2 = \sum_k [\operatorname{msf}(k) = 1]\),其中 \(\operatorname{msf}(k)\) 表示 \(i\) 的最小平方因子。
莫反一下就是 \(\sum_k \mu(k)\lfloor \frac{n}{k^2} \rfloor\)。
loj 6053:
有 \(f(p) = p-[p > 2]\),注意特殊处理 \(p = 2\)。
abc370g:
若 \(n = \prod p_i^{e_i}\),记 \(f(n) = \prod {e_i + m - 1 \choose e_i}\),\(g(n) = [\sigma(n) \equiv 1,2 \pmod 3] f(n)\)。那么 \(f\),\(g\) 显然是积性函数。
答案就是 \(\sum g(n) - \sum f(n)\)。而对于 \(h\) 的计算,我们需要求出 \(\bmod 3 \equiv 1,2\) 的素数个数,这两个东西实际是可以互推的。具体地,设 \(G_1, G_2\) 分别表示 \(\bmod 3 \equiv 1,2\) 的素数个数就可以转移了。
原创题
对每种可能的 \(S\),求出 \(1\sim n\) 内有多少个数 \(n = p_1^{c_1}p_2^{c_2}\cdots p_k^{c_k}\),满足其指数多重集 \(\{c_1,c_2,\dots,c_k\} = S\)。
考虑 min25 筛实质是在做什么工作,它本质是提供了一种根据最小质因子划分的重构树,然后一起统计此重构树上的叶子造成的贡献。
于是我们可以直接在 min25 筛的 dfs 函数上修改,额外记录下此时的指数多重集,然后利用 lucy dp 求出来的指数个数转移,时间复杂度同上。

浙公网安备 33010602011771号