Min-25 筛

参考 \(\text{OI-Wiki}\) 和 2018 集训队论文 朱震霆《一些特殊的数论函数求和问题》。

\(\text{Min-25}\) 的本质是埃式筛和数论分块,其实并没有什么高级的技巧。

记 \(x/y = \lfloor \frac{x}{y} \rfloor\),\(pr_k\) 表示第 \(k\) 小的质数,\(\text{lpf}(i)\) 表示 \(i\) 的最小质因数,\(\text{isprime(i)}\) 表示 \(i\) 是否是质数。如无特殊说明以下所有 \(p\) 表示质数。

假设我们要求一个积性函数 \(f\) 的前缀和 \(F(n) = \sum\limits_{i = 1}^{n} f(i)\)。要求 \(f(p)\) 能表示成较少个数的完全积性函数之和。\(f(p^k)\) 可以快速求值。

设 \(F_k(n) = \sum\limits_{i = 2}^{n} [\text{lpf}(i) \ge pr_k] f(i)\)。那么 \(F(n) = F_1(n) + f(1)\),因为 \(f\) 是积性函数,\(f(1) = 1\),即求 \(F_1(n) + 1\)。

考虑如何求一个 \(F_k(n)\),我们枚举最小质因子 \(pr_i\),次数为 \(c\),并特殊处理所有质数,可以得到

\[F_k(n) = \sum\limits_{i \ge k, {pr_i}^2 \le n} \sum\limits_{c \ge 1, {pr_i}^c \le n} f({pr_i}^c) \big{(} F_{i + 1}(n / {pr_i}^c, i + 1) + [c > 1] \big{)} + \sum\limits_{pr_k \le p \le n} f(p)
\]

设 \(F_{\text{prime}}(n) = \sum\limits_{p \le n} f(p)\),于是

\[F_k(n) = \sum\limits_{i \ge k, {pr_i}^c \le n} \sum\limits_{c \ge 1, {pr_i}^c \le n} f({pr_i}^c) \big{(} F_{i + 1}(n / {pr_i}^c, i + 1) + [c > 1] \big{)} + F_{\text{prime}}(n) - F_{\text{prime}}(pr_{k - 1})
\]

接下来我们需要求 \(F_\text{prime}(n)\)。对于 \(F_\text{prime}(pr_k)\) 的部分,由于 \(pr_k \le \sqrt n\),可以提前预处理。只需考虑 \(F_\text{prime}(n)\)。

在计算过程中我们只做了 \(n \gets n / x\) 的操作,由于 \(n / x_1 / x_2 / \ldots / x_m = n / (x_1 \times x_2 \times \ldots \times x_m)\)。于是只需对所有 \(m = n / i\),求 \(F_\text{prime}(m)\)。

做一遍整除分块,则 \(m\) 只有不超过 \(2\sqrt{n}\) 种取值,对这些 \(m\) 筛出 \(F_\text{prime}(m)\) 的点值即可。

一般情况下,\(f(p)\) 是一个关于 \(p\) 的低次多项式,可以表达为 \(f(p) = \sum\limits_{i} a_ix^i\)。

考虑分离每个 \(x^i\) 的贡献,设 \(g(p) = p^i\),类似的设一个 \(G_{\text{prime}}(n) = \sum\limits_{p = 2} g(p)\)。则最后可以用若干个 \(G_\text{prime}\) 合并出 \(F_{\text{prime}}\),此时再分别补上 \(a_i\) 的系数。

现在只需求 \(G_{\text{prime}}\)。注意到 \(g(p)\) 是完全积性函数。设 \(G_{k}(n) = \sum\limits_{i = 2}^{n} [\text{isprime}(i) \vee \text{lpf}(i) \ge pr_k] g(i)\),即埃式筛 \(k\) 轮后剩下的数 \(g(i)\) 之和。对于一个合数 \(x\),必有 \(\text{lpf}(x) \le \sqrt x\)。于是 \(G_\text{prime} = G_{\lfloor \sqrt{n} \rfloor}\)。

然后我们可以写出一个 \(G_k\) 的递推式:

\[\begin{align}

G_k(n) = \ & G_{k - 1}(n) - \sum\limits_{i = 2}^{n} [\lnot \text{isprime}(i) \wedge \text{lpf}(i) = pr_k] g(i) \\
& G_{k - 1}(n) - f(pr_k)\big{(}G_{k - 1}(n / pr_k) - G_\text{prime}(pr_{k - 1}) \big{)}

\end{align}
\]

其中由于 \(pr_k \le \sqrt n\),\(G_\text{prime}(pr_k)\) 同样可以预处理。最后从小到大枚举每个 \(k\) 做转移即可。

求出 \(F_\text{prime}\) 后可以直接递归算 \(F_k(n)\)。

时间复杂度分析我不会。参考论文的话,递推做 \(F_\text{prime}\) 部分时间复杂度 \(O(\frac{n^{\frac{3}{4}}}{\log n})\),递归算 \(F_k(n)\) 时间复杂度 \(O(n^{1 - \epsilon})\),总时间复杂度就是两者相加。

\(\text{Min-25}\) 的题目基本上都比较板,这里就不讲了。

Min-25 筛小记的更多相关文章

  1. $Min\_25$筛学习笔记

    \(Min\_25\)筛学习笔记 这种神仙东西不写点东西一下就忘了QAQ 资料和代码出处 资料2 资料3 打死我也不承认参考了yyb的 \(Min\_25\)筛可以干嘛?下文中未特殊说明\(P\)均指 ...

  2. 「笔记」$Min\_25$筛

    总之我也不知道这个奇怪的名字是怎么来的. \(Min\_25\)筛用来计算一类积性函数前缀和. 如果一个积性函数\(F(x)\)在质数单点是一个可以快速计算的关于此质数的多项式. 那么可以用\(Min ...

  3. Min_25筛学习笔记

    感觉好好用啊 Luogu上的杜教筛模版题一发 Min_25抢到了 rank1 $ Updated \ on 11.29 $被 STO txc ORZ踩爆啦 前言 $ Min$_$25$筛可以求积性函数 ...

  4. [复习]莫比乌斯反演,杜教筛,min_25筛

    [复习]莫比乌斯反演,杜教筛,min_25筛 莫比乌斯反演 做题的时候的常用形式: \[\begin{aligned}g(n)&=\sum_{n|d}f(d)\\f(n)&=\sum_ ...

  5. 【51NOD 1847】奇怪的数学题(莫比乌斯反演,杜教筛,min_25筛,第二类斯特林数)

    [51NOD 1847]奇怪的数学题(莫比乌斯反演,杜教筛,min_25筛,第二类斯特林数) 题面 51NOD \[\sum_{i=1}^n\sum_{j=1}^nsgcd(i,j)^k\] 其中\( ...

  6. 【LOJ#572】Misaka Network 与求和(莫比乌斯反演,杜教筛,min_25筛)

    [LOJ#572]Misaka Network 与求和(莫比乌斯反演,杜教筛,min_25筛) 题面 LOJ \[ans=\sum_{i=1}^n\sum_{j=1}^n f(gcd(i,j))^k\ ...

  7. uoj#188. 【UR #13】Sanrd(Min_25筛)

    题面 传送门 题解 这是一道语文题 不难看出,题目所求即为\(l\)到\(r\)中每个数的次大质因子 我们考虑\(Min\_25\)筛的过程,设 \[S(n,j)=\sum_{i=1}^nsec_p( ...

  8. [学习笔记]min_25筛

    神佬yyb 神佬zsy 想不到花了两个小时的时间看 \(min\_25\) 筛就看懂了 实际去追了一下魔禁3 我们先举个例子.如求 \[\sum_{i=1}^{n}f(i)\] 其中 \(f(i)\) ...

  9. 【UOJ#188】Sanrd(min_25筛)

    [UOJ#188]Sanrd(min_25筛) 题面 UOJ 题解 今天菊开讲的题目.(千古神犇陈菊开,扑通扑通跪下来) 题目要求的就是所有数的次大质因子的和. 这个部分和\(min\_25\)筛中枚 ...

  10. uoj#448. 【集训队作业2018】人类的本质(Min_25筛+拉格朗日插值)

    题面 传送门 题解 肝了整整一天--膜拜yww和cx巨巨--(虽然它们的题解里我就没看懂几个字) 请备好草稿纸和笔,这种题目就是需要耐心推倒 题目所求是这么一个东西 \[ \begin{aligned ...

随机推荐

  1. 关于SpringBoot 启动失败 Invocation of init method failed; nested exception is java.lang.IllegalStateException: Ambiguous mapping. 的问题解析

    Application run failed org.springframework.beans.factory.BeanCreationException: Error creating bean ...

  2. [学习笔记] 斜率优化DP - DP

    这个真的好容易啊 --wzw 斜率优化dP 例题 [SDOI2012] 任务安排 毒瘤题,让我惨淡经营了两天.这道题luogu有简单版,可以先去看简单版. 显然这是一只DP题,直接开始推狮子.令 dp ...

  3. FreeSWITCH对接http协议的tts服务

    操作系统 :CentOS 7.6_x64 FreeSWITCH版本 :1.10.9   FreeSWITCH里面有个mod_tts_commandline模块,可以用来对接http协议的tts服务,今 ...

  4. grpc断路器之sentinel 荐

    背景 为了防止下游服务雪崩,这里考虑使用断路器 技术选型 由于是springboot服务且集成了istio,这里考虑三种方案 istio hystrix sentinel 这里分别有这几种方案的对比 ...

  5. quartz监控日志(一)

    最近几个月,现网总是出现定时器不执行的情况,或者定时器卡死的情况,而又不方便排查,只能依靠quartz的debug日志以及错误日志来监控定时器的执行情况,并且随着我们系统中job越来越多,而使得job ...

  6. mfc的ClistCtrl控件列的排序

    在网上看了许多排序的方法,都没看懂,初学者的悲剧,然后就自己弄了个,请大家指正. ClistCtrl控件的行带着一个结构体,不过那结构体不好懂,看得眼花缭乱.好多也弄不明白,就自己写了个结构体,把一行 ...

  7. docker启动一个不停止的centos系统容器

    启动的镜像后加上/usr/sbin/init ,前提是镜像中没有设置entrypoint

  8. 【selenium + python】之BSTestRunner生成测试报告时报错:NameError: name 'unicode' is not defined

    好久没生成报告了,最近使用的时候报了一个错误!用的这个报告模板BSTestRunner但是汇报下面的错误: NameError: name 'unicode' is not defined 经查询得知 ...

  9. 走进Docker的世界--(库存学习笔记)

    第一天 走进Docker的世界 介绍docker的前世今生,了解docker的实现原理,以Django项目为例,带大家如何编写最佳的Dockerfile构建镜像.通过本章的学习,大家会知道docker ...

  10. 一文轻松搞定 tarjan 算法(二)(附带 tarjan 题单)

    完结篇:tarjan 求割点.点双连通分量.割边(桥)(附 40 道很好的 tarjan 题目). 上一篇(tarjan 求强连通分量,缩点,求边双) tarjan 求割点 还是求强联通分量的大致思路 ...