Min-25 筛小记
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_{\text{prime}}(n) = \sum\limits_{p \le n} f(p)\),于是
\]
接下来我们需要求 \(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\) 的递推式:
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 筛小记的更多相关文章
- $Min\_25$筛学习笔记
\(Min\_25\)筛学习笔记 这种神仙东西不写点东西一下就忘了QAQ 资料和代码出处 资料2 资料3 打死我也不承认参考了yyb的 \(Min\_25\)筛可以干嘛?下文中未特殊说明\(P\)均指 ...
- 「笔记」$Min\_25$筛
总之我也不知道这个奇怪的名字是怎么来的. \(Min\_25\)筛用来计算一类积性函数前缀和. 如果一个积性函数\(F(x)\)在质数单点是一个可以快速计算的关于此质数的多项式. 那么可以用\(Min ...
- Min_25筛学习笔记
感觉好好用啊 Luogu上的杜教筛模版题一发 Min_25抢到了 rank1 $ Updated \ on 11.29 $被 STO txc ORZ踩爆啦 前言 $ Min$_$25$筛可以求积性函数 ...
- [复习]莫比乌斯反演,杜教筛,min_25筛
[复习]莫比乌斯反演,杜教筛,min_25筛 莫比乌斯反演 做题的时候的常用形式: \[\begin{aligned}g(n)&=\sum_{n|d}f(d)\\f(n)&=\sum_ ...
- 【51NOD 1847】奇怪的数学题(莫比乌斯反演,杜教筛,min_25筛,第二类斯特林数)
[51NOD 1847]奇怪的数学题(莫比乌斯反演,杜教筛,min_25筛,第二类斯特林数) 题面 51NOD \[\sum_{i=1}^n\sum_{j=1}^nsgcd(i,j)^k\] 其中\( ...
- 【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\ ...
- uoj#188. 【UR #13】Sanrd(Min_25筛)
题面 传送门 题解 这是一道语文题 不难看出,题目所求即为\(l\)到\(r\)中每个数的次大质因子 我们考虑\(Min\_25\)筛的过程,设 \[S(n,j)=\sum_{i=1}^nsec_p( ...
- [学习笔记]min_25筛
神佬yyb 神佬zsy 想不到花了两个小时的时间看 \(min\_25\) 筛就看懂了 实际去追了一下魔禁3 我们先举个例子.如求 \[\sum_{i=1}^{n}f(i)\] 其中 \(f(i)\) ...
- 【UOJ#188】Sanrd(min_25筛)
[UOJ#188]Sanrd(min_25筛) 题面 UOJ 题解 今天菊开讲的题目.(千古神犇陈菊开,扑通扑通跪下来) 题目要求的就是所有数的次大质因子的和. 这个部分和\(min\_25\)筛中枚 ...
- uoj#448. 【集训队作业2018】人类的本质(Min_25筛+拉格朗日插值)
题面 传送门 题解 肝了整整一天--膜拜yww和cx巨巨--(虽然它们的题解里我就没看懂几个字) 请备好草稿纸和笔,这种题目就是需要耐心推倒 题目所求是这么一个东西 \[ \begin{aligned ...
随机推荐
- java增量发布工具
有些公司由于没有使用maven作为构建工具,全量发布时没问题,而修改bug增量发布往往是将改动的代码手动编译后,从classes目录下拷贝到jar中然后再放到tomcat目录下发布,这种方法准确度不高 ...
- Kubernetes 初体验
在 DigitalOcean 创建一个 Kubernetes 集群 下载集群 Config 文件到 ~/.kube 目录 通过环境变量 KUBECONFIG 设置本地 kubectl 工具使用下载的配 ...
- JWT(JSON WEB TOKEN)是玩具吗
JWT当然不是玩具,理解其设计意图,和适用场景自然会发现存在的就是有价值的 JWT: JSON Web Token 起源和定义 JWT(JSON Web Token)是由 IETF(Internet ...
- 程序员失业日记4:半个月拿下4个offer
上篇文章很多小伙伴留言也讲到自己被公司裁员,还有的细心的小伙伴说去年九月就被裁了,在看一下文章的发布时间,绷不住了.先和大家说一下,我已经找到工作,因为最近工作一直都很忙,加上自己也比较懒,所以就拖了 ...
- Element Plus使用
目录 Element Plus快速入门 常用组件 Element:是饿了么团队研发的,基于 Vue 3,面向设计师和开发者的组件库. 组件:组成网页的部件,例如 超链接.按钮.图片.表格.表单.分页条 ...
- .net core 依赖注入,运行报错 Cannot consume scoped 'xxx' service from singleton 'yyy'
这是因为 xxx 的生命周期是 AddScoped 注入的,而 yyy 的生命周期是 AddSingleton ,然后 yyy 这个单例的对象中,它又依赖了xxx 也就是说,单例注入的对象中依赖了 A ...
- Asp.net 获取客户端的信息
Response.Write("客户端计算机名:" + Request.UserHostName + "<BR />"); Response.Wri ...
- Go runtime 调度器精讲(十):异步抢占
原创文章,欢迎转载,转载请注明出处,谢谢. 0. 前言 前面介绍了运行时间过长和系统调用引起的抢占,它们都属于协作式抢占.本讲会介绍基于信号的真抢占式调度. 在介绍真抢占式调度之前看下 Go 的两种抢 ...
- GPUStack 0.2:开箱即用的分布式推理、CPU推理和调度策略
GPUStack 是一个专为运行大语言模型(LLM)设计的开源 GPU 集群管理器,旨在支持基于任何品牌的异构 GPU 构建统一管理的算力集群,无论这些 GPU 运行在 Apple Mac.Windo ...
- Nuxt Kit 使用日志记录工具
title: Nuxt Kit 使用日志记录工具 date: 2024/9/23 updated: 2024/9/23 author: cmdragon excerpt: 摘要:本文介绍在Nuxt 3 ...