前置姿势

魔力筛

其实不看也没关系

用途和限制

在\(\mathrm{O}(\frac{n^{0.75}}{\log n})\)的时间内求出一个积性函数的前缀和。

所求的函数\(\mathbf f(x)\)要满足以下条件:

  1. \(\mathbf f(p)\)是一个多项式,其中\(p\)是质数
  2. \(\mathbf f(p^c)\)要能够快速计算。

算法流程

首先我们需要求出对于每一个\(\left\lfloor \frac ni\right\rfloor\)求出\(\sum_{i=1}^x [i \in P] \mathbf f(i)\),其中\(P\)是质数集合。

首先筛出\(\sqrt n\)以内的质数,设\(P_j\)表示从小到大第\(j\)个质数。

设\(\mathbf g(n, j)\)表示所有最小质因子大于\(P_j\)的数加上质数的\(\mathbf f(i)\)的和。

那么\(\mathbf g(n, |P|)\)就是所求。

考虑\(\mathbf g(n, j)\)的转移,分两种情况。

  1. \(P_j^2 > n\)

    这个质数不会造成任何影响,于是\(\mathbf g(n, j) = \mathbf g(n, j - 1)\)。

  2. \(P_J^2 \leq n\)

    这里我们要考虑筛掉了多少个数字。

    那么筛掉的数字中一定含有最小质因子\(P_j\),所以我们考虑减去\(\mathbf g(\frac n{P_j}, j - 1)\),但是这样我们多减了前\(j - 1\)个质数的\(\mathbf f\)之和,所以要加上\(\sum_{i=1}^{j - 1}\mathbf f(P_j) = \mathbf g(P_{j - 1}, j - 1)\)

总结一下就是:
\[
\mathbf g(n,j)=
\begin{cases}
\mathbf g(n,j-1)&P_j^2\gt n\\
\mathbf g(n,j-1)-\mathbf f(P_j)[\mathbf g(\frac{n}{P_j},j-1)-\mathbf g(P_{j - 1}, j - 1)]&P_j^2\leq n
\end{cases}
\]
这里可以滚动数组求一下。(感觉和魔力筛很像呢)

到这里我们发现我们已经对于\(x = \left\lfloor \frac ni\right\rfloor\)求出\(\sum_{i=1}^x [i \in P]\mathbf f(i)\)

设\(\mathbf S(n, j) = \sum_{i=1}^n [\mathrm{minp}(i) \geq P_j]\mathbf f(i)\)

那么最终的答案为\(\mathbf S(n, 1) + 1\)

然后我们将\(n\)以内的数字分为质数和合数

质数部分我们得出答案了,为\(\mathbf g(n, |P|) - \mathbf g(P_{j - 1}, j - 1)\)

考虑合数,其实很简单,考虑枚举最小质因子和其出现次数,然后爆算就可以了。
\[
\mathbf S(n,j)=\mathbf g(n, |P|) - \mathbf g(P_{j - 1}, j - 1)+\sum_{k=j}^{P_k^2\le n}\sum_{e=1}^{P_k^{e+1}\le n}\mathbf S(\frac{n}{P_k^e},k+1)\times \mathbf f(P_k^e)+\mathbf f(P_k^{e+1})
\]
然后就没啦。

最后讲一个东西,就是\(\mathbf S\)不用记忆化。

例题什么的以后再补吧。

「学习笔记」min_25筛的更多相关文章

  1. 「学习笔记」Min25筛

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

  2. 「算法笔记」Min_25 筛

    戳 这里(加了密码).虽然写的可能还算清楚,但还是不公开了吧 QwQ. 真的想看的 私信可能会考虑给密码 qwq.就放个板子: //LOJ 6053 简单的函数 f(p^c)=p xor c #inc ...

  3. 「学习笔记」FFT 之优化——NTT

    目录 「学习笔记」FFT 之优化--NTT 前言 引入 快速数论变换--NTT 一些引申问题及解决方法 三模数 NTT 拆系数 FFT (MTT) 「学习笔记」FFT 之优化--NTT 前言 \(NT ...

  4. 「学习笔记」FFT 快速傅里叶变换

    目录 「学习笔记」FFT 快速傅里叶变换 啥是 FFT 呀?它可以干什么? 必备芝士 点值表示 复数 傅立叶正变换 傅里叶逆变换 FFT 的代码实现 还会有的 NTT 和三模数 NTT... 「学习笔 ...

  5. 「学习笔记」Treap

    「学习笔记」Treap 前言 什么是 Treap ? 二叉搜索树 (Binary Search Tree/Binary Sort Tree/BST) 基础定义 查找元素 插入元素 删除元素 查找后继 ...

  6. 「学习笔记」字符串基础:Hash,KMP与Trie

    「学习笔记」字符串基础:Hash,KMP与Trie 点击查看目录 目录 「学习笔记」字符串基础:Hash,KMP与Trie Hash 算法 代码 KMP 算法 前置知识:\(\text{Border} ...

  7. 「学习笔记」wqs二分/dp凸优化

    [学习笔记]wqs二分/DP凸优化 从一个经典问题谈起: 有一个长度为 \(n\) 的序列 \(a\),要求找出恰好 \(k\) 个不相交的连续子序列,使得这 \(k\) 个序列的和最大 \(1 \l ...

  8. 「学习笔记」ST表

    问题引入 先让我们看一个简单的问题,有N个元素,Q次操作,每次操作需要求出一段区间内的最大/小值. 这就是著名的RMQ问题. RMQ问题的解法有很多,如线段树.单调队列(某些情况下).ST表等.这里主 ...

  9. 「学习笔记」递推 & 递归

    引入 假设我们想计算 \(f(x) = x!\).除了简单的 for 循环,我们也可以使用递归. 递归是什么意思呢?我们可以把 \(f(x)\) 用 \(f(x - 1)\) 表示,即 \(f(x) ...

随机推荐

  1. Mysql语句中当前时间不能直接使用C#中的Date.Now传输

    MySql中处理字符串时间,会默认把第一个数字当成年份处理. 在C#服务器中,使用Date.Now.ToString()生成的字符串时间,如果不指定字符串格式,C#会按照系统语言输出不同的字符串格式, ...

  2. ASP.net core 使用UEditor.Core 实现 ueditor 上传功能

    ASP.net core 使用UEditor.Core 实现 ueditor 上传功能 首先通过nuget 引用UEditor.Core,作者github:https://github.com/bai ...

  3. GITHup的使用

    一个源码管理工具,由于不擅长敲GIt命令,还不太喜欢用英文版本的软件,所以想办法用中文版的图形工具步骤如下: 下载了GIT64位,安装,下载了TortoiseGit和TortoiseGit中文语言包, ...

  4. css transition 实现滑入滑出

    transition是css最简单的动画. 通常当一个div属性变化时,我们会立即看的变化,从旧样式到新样式是一瞬间的,嗖嗖嗖!!! 但是,如果我希望是慢慢的从一种状态,转变成另外一种状态,怎么办?  ...

  5. vue.js引入

    开始学习vue.js,引入vue.vue.js一定要在head里面引入,实际开发中我们可能在body中引入,但是可能存在抖屏现象. 为了避免出现抖屏现象,我们引入vue.js或者jquery.js 最 ...

  6. ASP.NET Core 一步步搭建个人网站(1)_环境搭建

    ASP.NET Core2.0发布有一阵子了,这是.NET 开源跨平台的一个重大里程碑, 也意味着比1.0版本要更加成熟.目前.net core具有开源.跨平台.灵活部署.模块化架构等等特性,吸引着一 ...

  7. Python开发爬虫之理论篇

    爬虫简介 爬虫:一段自动抓取互联网信息的程序. 什么意思呢? 互联网是由各种各样的网页组成.每一个网页对应一个URL,而URL的页面上又有很多指向其他页面的URL.这种URL之间相互的指向关系就形成了 ...

  8. axios中的this指向问题

    最近在使用vue过程中,使用axios进行接口请求,确发现取不到值,返回为undefined. show (item) { let searchText = item.keyword console. ...

  9. Android Studio遇到Failed to sync Gradle project错误时的解决办法

    一   报错显示 Gradle sync failed: Unknown host 'd29vzk4ow07wi7.cloudfront.net'. You may need to adjust th ...

  10. 南京邮电大学java程序设计作业在线编程第八次作业

    程序设计类课程作业平台 王利国 主页 教学资源 我的作业列表 程序设计课 账户 王利国的"Java语言程序设计第8次作业(2018)"详细 主页 我的作业列表 作业结果详细 总分: ...