赛上想写,Track Lost 了属于是。

\(\mathscr{Intro}\)

  Min_25 筛是用于求积性函数前缀和,同时顺带求出一些“有意思”的信息的筛法。

  一些记号约定

  • \(\mathbb P\) 为素数集,对于以 \(p\) 为记号的数,有 \(p\in\mathbb P\)。
  • \(p_i\) 表示第 \(i\) 小的素数。特别地,\(p_0=1\)。
  • \(\newcommand{\lpf}[0]{\operatorname{lpf}} \lpf(n)\) 表示 \(n\) 的最小素因子。
  • \(a/b=\lfloor\frac{a}{b}\rfloor\).

\(\mathscr{Algorithm}\)

  明确我们的目标:对于积性函数 \(f(n)\),求出

\[\sum_{i=1}^nf(i).
\]

此后,我们用 \(m\) 来表示一般的求和上标,而 \(n\) 恒为问题中待求的前缀值。


  Min_25 筛分两步走。第一步:对于所有 \(x\in D=\{n/i\mid i\in[1,n]\}\),求出 \(\sum_{p\le x} f(p)\)。

  这里需要运用 Min_25 筛的核心思想:首先承认所有合数为素数,然后逐步筛掉它们,修正得到正确答案。形式地,令 \(f_P(x)\) 表示 \(f(p)\) 处关于 \(p\) 的多项式,当然我们需要把 \(f_P(x)\) 的定义域从 \(\mathbb P\) 强行钦定为 \(\mathbb N^\star\);最后,定义 \(G(m,i)\) 为

\[G(m,i)=\sum_{j=2}^m[j\in\mathbb P\lor\lpf(j)>p_i]f_P(j).
\]

它表示对于 \(2\sim m\),只用前 \(i\) 个素数做埃筛后,承认剩下的数都是素数,得到的 \(f\) 之和。可见我们的目标就是求出所有 \(G(x,\pi(\lfloor\sqrt{n}\rfloor))\)。尝试写出 \(G(m,i)\) 的递推式:

\[G(m,i)=G(m,i-1)-\sum_{j=2}^m[j\notin\mathbb P\land\lpf(j)=p_i]f_P(j).
\]

如何优化掉和式?为了将和式转化成 \(G\) 的形式,自然的想法是令 \(j\leftarrow j/p_i\),那么此时就必须追加一个条件:\(f_P(x)\) 为完全积性函数。借此进一步转化:

\[G(m,i)=G(m,i-1)-f_P(p_i)\left[ G(m/p_i,j-1)-\sum_{j<i}f_P(p_j) \right].
\]

注意 \(j<i\le\pi(\lfloor\sqrt n\rfloor)\),所以 \(P(m)=\sum_{i=1}^mf_P(p_i)\) 可以直接预处理出来。复杂度待会儿说√

  可见,就算仅使用 Min_25 筛的第一步,也能解决一些问题。例如令 \(f(n)=1\),就能计算 \(\pi(n)\)。


  第二步:对于所有 \(x\in D\),求出 \(\sum_{i=2}^xf(i)\)。

  还是利用同样的思想,定义 \(F(m,i)\) 为

\[F(m,i)=\sum_{j=2}^m[j\in\mathbb P\lor \lpf(j)>p_i]f(j).
\]

它表示素数以及所有被 \(p_{i+1..\pi(n)}\) 筛掉的合数的 \(f\) 之和,\(m\) 的最终答案即为 \(F(m,0)\)。类似与 \(G\) 的转移,不过由于 \(f\) 不一定完全积性,我们不得不枚举 \(p_i\) 的指数,有

\[F(m,i)=F(m,i+1)+\sum_{j\ge1,p_i^{j+1}\le m}f(p_i^j)F(m/p^j,i+1)+f(p_i^{j+1}).
\]

注意 \(f(p_i)\) 早已计算过,所以和式的第二项从 \(f(p_i^2)\) 开始累加。

  这里还有一种两层和式的递推方式,据说会引出 \(\mathcal O(n^{1-\epsilon})\) 的递归求解算法。我不会证,而且我一写出来就是这种一层和式,你让我怎么硬生生再套一层,所以略过,抱歉 qwq。


  对于 \(F,G\) 的状态复杂度,有

\[\begin{aligned}
T(n) &= \sum_{i=1}^{\sqrt n}\pi\left(\sqrt{n/i}\right)+\sum_{x=1}^{\sqrt n}\pi(i)\\
&= \sum_{i=1}^{\sqrt n}\mathcal O\left(\frac{\sqrt{n/i}}{\ln \sqrt{n/i}}\right)+\mathcal O\left(\frac{\sqrt i}{\ln \sqrt i}\right)\\
&= \mathcal O\left(\int_0^{\sqrt n} \frac{(n/x)^{\frac{1}{2}}}{\frac{1}{2}\ln(n/x)}\text dx\right)\\
&=\mathcal O\left(\int_0^{\sqrt n} \frac{(n/x)^{\frac{1}{2}}}{\frac{1}{4}\ln n}\text dx\right)\\
&= \mathcal O\left(\frac{n^{\frac{3}{4}}}{\ln n}\right).
\end{aligned}
\]

为了方便理解,\(\log\) 都确切地写作 \(\ln\) 啦。

  这里有个疑点,为什么 \(F\) 的递推形式转移不影响复杂度。没找到资料 qwq。

  UPD: 悟了,前常数个 \(j\) 直接放成 \(O\left(\frac{n^{\frac{3}{4}}}{\ln n}\right)\),直到后面的 \(j\) 全部放成 \(\ln\) 倍的某一复杂度都比不过,就能证了。

  对于空间复杂度,滚动 \(i\),\(F(m,i)\) 和 \(G(m,i)\) 都只需要记录 \(\mathcal O(\sqrt n)\) 个 \(n/i\) 的点值。

  注意:为保证复杂度,不能访问任何非法状态,否则退化成 \(\mathcal O(n^{1-\epsilon})\)。

Note -「Min_25 筛」“你就说这素因子你要不要吧?你要不要?”的更多相关文章

  1. Note -「Mobius 反演」光速入门

    目录 Preface 数论函数 积性函数 Dirichlet 卷积 Dirichlet 卷积中的特殊函数 Mobius 函数 & Mobius 反演 Mobius 函数 Mobius 反演 基 ...

  2. Note -「Lagrange 插值」学习笔记

    目录 问题引入 思考 Lagrange 插值法 插值过程 代码实现 实际应用 「洛谷 P4781」「模板」拉格朗日插值 「洛谷 P4463」calc 题意简述 数据规模 Solution Step 1 ...

  3. Note -「动态 DP」学习笔记

    目录 「CF 750E」New Year and Old Subsequence 「洛谷 P4719」「模板」"动态 DP" & 动态树分治 「洛谷 P6021」洪水 「S ...

  4. Note -「单位根反演」学习笔记

    \(\mathcal{Preface}\)   单位根反演,顾名思义就是用单位根变换一类式子的形式.有关单位根的基本概念可见我的这篇博客. \(\mathcal{Formula}\)   单位根反演的 ...

  5. LOJ3069. 「2019 集训队互测 Day 1」整点计数(min_25筛)

    题目链接 https://loj.ac/problem/3069 题解 复数真神奇. 一句话题意:令 \(f(x)\) 表示以原点 \((0, 0)\) 为圆心,半径为 \(x\) 的圆上的整点数量, ...

  6. LOJ572. 「LibreOJ Round #11」Misaka Network 与求和 [莫比乌斯反演,杜教筛,min_25筛]

    传送门 思路 (以下令\(F(n)=f(n)^k\)) 首先肯定要莫比乌斯反演,那么可以推出: \[ ans=\sum_{T=1}^n \lfloor\frac n T\rfloor^2\sum_{d ...

  7. 「NOI2016」循环之美(小性质+min_25筛)

    传送门. 题解 感觉这题最难的是第一个结论. x/y首先要互质,然后如果在10进制是纯循环小数,不难想到y不是2.5的倍数就好了. 因为十进制下除以2和5是除得尽的. 必然会多出来的什么东西. 如果是 ...

  8. Solution -「洛谷 P5325」Min_25 筛

    \(\mathcal{Description}\)   Link.   对于积性函数 \(f(x)\),有 \(f(p^k)=p^k(p^k-1)~(p\in\mathbb P,k\in\mathbb ...

  9. 「学习笔记」Min25筛

    「学习笔记」Min25筛 前言 周指导今天模拟赛五分钟秒第一题,十分钟说第二题是 \(\text{Min25}​\) 筛板子题,要不是第三题出题人数据范围给错了,周指导十五分钟就 \(\text{AK ...

随机推荐

  1. nginx 超时时间配置说明

    做excel文件导入时 报 504 错误 是nginx网关超时导致 下面几个参数貌似没效果,反正我配置不起作用 这是有问题的配置属性 ,注意   于是我换了配置 ,放在http块里 ,配置生效了 #读 ...

  2. wget 工具使用

    wget http://xxxx 下载文件到当前文件夹 wget -V 显示wget的版本信息并退出 wget -v 打印详细信息 默认 wget -nv 关闭详细输出,但不进入安静模式 wget - ...

  3. 修正了Model1模式,进入如今盛行的的Model2模式,也就是MVC模式

    注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6513668601843548675/ 1.<JSP页面实际上就是Servlet> 2.<JSP页 ...

  4. vue3.0+vite+ts项目搭建-分环境打包(四)

    分环境打包配置 新建.env.dev(或者.env) VITE_NODE_ENV = 'dev' VITE_HOST = 'http://local.host.com' 执行yarn dev ,控制台 ...

  5. 金融云原生漫谈(三)|银行云原生基础设施构建:裸金属VS虚拟机

    在金融行业数字化转型的驱动下,国有银行.股份制银行和各级商业银行也纷纷步入容器化的进程.   如果以容器云上生产为目标,那么整个容器云平台的设计.建设和优化对于银行来说是一个巨大的挑战.如何更好地利用 ...

  6. 三分钟:极速体验JAVA版目标检测(YOLO4)

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  7. 【机器学习】kNN

    机器学习算法--kNN 目录 机器学习算法--kNN 1. 算法原理 2. 算法实现 2.1 kd-tree构造 2.2 kd-tree查询 2.3 kNN算法实现 3. 算法测试 Ref 1. 算法 ...

  8. 【笔记】golang中使用protocol buffers的底层库直接解码二进制数据

    背景 一个简单的代理程序,发现单核QPS达到2万/s左右就上不去了,40%的CPU消耗在pb的decode/encode上面. 于是我想,对于特定的场景,直接从[]byte中取出字段,而不用完全的把整 ...

  9. 使用Hot Chocolate和.NET 6构建GraphQL应用文章索引

    系列背景 在进入微服务的实践系列之前,我们一起来学习和实践一下.NET应用开发生态中一些比较重要的技术,这个系列就是关于GraphQL在.NET 6应用中的实现. 系列导航 使用Hot Chocola ...

  10. Cesium官方英文论坛

    Cesium中文网:http://cesiumcn.org/ | 国内快速访问:http://cesium.coinidea.com/ Cesium官方刚刚完成了将Google Groups论坛转移到 ...