「笔记」$Min\_25$筛
总之我也不知道这个奇怪的名字是怎么来的。
\(Min\_25\)筛用来计算一类积性函数前缀和。
如果一个积性函数\(F(x)\)在质数单点是一个可以快速计算的关于此质数的多项式。
那么可以用\(Min\_25筛\)。
这个东西和质数关系很大。
我们考虑分开处理质数和非质数的贡献。
首先处理质数:
设,\(R(n)\)为\(n\)的最小质因子,\(P\)为质因子集合,\(p_i\)为从小到大第\(i\)个质数。
\(\forall\ x\in P,F(x)=x^k\)。
设:
\]
那么转移:
如果当前\(p_j^2>n\),因为最小的含有\(p_j\)的合数是\(p_j^2\),所以没有贡献需要减掉。
那么:
\]
如果当前\(p_j^2<=n\),这个时候要减掉一些贡献了。
这些贡献是\(p_j\)所带来的,而这个时候左右\(R(i)=p_j\)的贡献都需要被减掉。
考虑求出这部分的贡献。
那么显然是对于其所能达到的最小的合数开始计算到所能达到的最大合数。
这一部分显然是属于\([p_j^2,n]\)。
那么考虑这一部分的贡献。
可以容易的得到转移方程。
\]
这样合并转移表达式就是:
\begin{cases}
g(n,j-1)&p_j^2>n\\
g(n,j-1)-p_j^k(g(\frac{n}{p_j},j-1)-g(p_j-1,j-1))&p_j^2\leq n\\
\end{cases}
\]
初始化一下:
\]
这样我们就计算了质数部分了。
然后考虑计算真正的函数前缀和。
设$$S(n,j)=\sum\limits_{i=1}^{n}F(i)[R(i)\geq p_j]$$
区分计算质数和合数的贡献。
考虑质数部分:\(g(n,|P|)-\sum\limits_{i=1}^{j-1}F(p_i)\)
合数部分考虑枚举最小质因子及其在某个数中的幂次,这里要满足\(\frac{n}{p_k^e}>p_k\),这样才能保证这个数的最小质因数被除尽。
由于我们先暂时的不考虑1的贡献,所以需要加上\(p_k\)的某次幂的贡献,所以这里的贡献是:
\]
这样就得到了我们的递推式了:
\]
答案就是:
\]
复杂度不知道。
但是在\(n\leq 10^{13}\)范围里面跑得很快而且比州阁筛好写很多。
「笔记」$Min\_25$筛的更多相关文章
- $Min\_25$筛学习笔记
\(Min\_25\)筛学习笔记 这种神仙东西不写点东西一下就忘了QAQ 资料和代码出处 资料2 资料3 打死我也不承认参考了yyb的 \(Min\_25\)筛可以干嘛?下文中未特殊说明\(P\)均指 ...
- 「笔记」AC 自动机
目录 写在前面 定义 引入 构造 暴力 字典图优化 匹配 在线 离线 复杂度 完整代码 例题 P3796 [模板]AC 自动机(加强版) P3808 [模板]AC 自动机(简单版) 「JSOI2007 ...
- 「AGC020D」 Min Max Repetition
「AGC020D」 Min Max Repetition 传送门 首先这个东西的连续字符个数你可以二分.但事实上没有必要,这是可以直接算出来的. 即 \(k=\max\{\lceil\frac{A}{ ...
- Linux 小知识翻译 - 「RAID」
最近术语「RAID」变得比较有名.「RAID」是指将多个HDD组合起来使用,从而提高存储可靠性的一种技术. 那么,关于 RAID 中的 「RAID 0」「RAID 1」「RAID 5」等各种「RAID ...
- 「BZOJ 1876」「SDOI 2009」SuperGCD「数论」
题意 求\(\gcd(a, b)\),其中\(a,b\leq10^{10000}\) 题解 使用\(\text{Stein}\)算法,其原理是不断筛除因子\(2\)然后使用更相减损法 如果不筛\(2\ ...
- 语义分割丨PSPNet源码解析「测试阶段」
引言 本文接着上一篇语义分割丨PSPNet源码解析「网络训练」,继续介绍语义分割的测试阶段. 模型训练完成后,以什么样的策略来进行测试也非常重要. 一般来说模型测试分为单尺度single scale和 ...
- 正则表达式从入门到放弃「Java」
正则表达式能做什么? 正则表达式可以用来搜索.编辑或处理文本. 「都懂它可以处理文本,可到底是怎么回事?」 正则表达式的定义 百度百科:正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特 ...
- 🔥SpringBoot图文教程2—日志的使用「logback」「log4j」
有天上飞的概念,就要有落地的实现 概念+代码实现是本文的特点,教程将涵盖完整的图文教程,代码案例 文章结尾配套自测面试题,学完技术自我测试更扎实 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例 ...
- Scala 学习(10)之「集合 」
数组 定长数组 Array:采用()访问,而不是[],下标从 0 开始. val array1 = new Array[String](5) //创建数组 println(array1) //返回数组 ...
随机推荐
- 加载映射文件几种方式和mapper接口注解执行sql语句
一.加载映射文件几种方式 二.mapper接口注解执行sql语句 就将xml中的sql语句放到注解的括号中就可以,一般只用于简单的sql语句合适:
- 部署MySQL主主复制管理器
一.概念 MMM(Master-Master replication manager for MvSQL,MySQL主主复制管理器)是一套支持双主故障切换和双主日常管理的脚本程序.MMM 使用 Per ...
- 【第五篇】-Maven 构建配置文件之Spring Cloud直播商城 b2b2c电子商务技术总结
Maven 构建配置文件 构建配置文件是一系列的配置项的值,可以用来设置或者覆盖 Maven 构建默认值. 使用构建配置文件,你可以为不同的环境,比如说生产环境(Production)和开发(Deve ...
- String与基本类型,字符数组,字节数组的转换
String与基本数据类型 * 基本数据 --->字符串(String) * 1.基本数据类型值 +"" --->最简单 * 2.使用包装类中的toString(参数类 ...
- 优雅的编码,使用Optional代替if-else
Optional是JAVA8引入的类,它其实是一个包装类,可以对所有对象进行包装, 包括null,这个特性使得我们编码可以优雅的解决空指针异常. 先编写一些测试类 class Student { pr ...
- 3.17学习总结.listview用法总结
今天复习了listview控件的用法. 1.activity_main.xml 中的代码,如下: <?xml version="1.0" encoding="utf ...
- Linux服务器通用安全加固指南
一.基本系统安全 1.保护引导过程(以Grub引导为例) 在 /etc/inittab 中添加 sp:S:respawn:/sbin/sulogin,以确保当切换到单用户模式时 运行级的配置要求输入 ...
- php stream 流封装协议
http://php.net/manual/wrappers.php 过程: 1. 开始通信 2. 读取数据 3. 写入数据 4. 结束通信 usage: * 读写文件系统 <?php $han ...
- css定位:p:nth-child(n)
p:nth-child(n) 定位p标签下的第一个元素,下标从1开始. 首先是一个标签下有多个相同的元素. 如index_service_cnt js_service_list下有多个class=&q ...
- 重新嫁接rm命令
### 重定义rm命令 #### 定义回收站目录trash_path='~/.trash'# 判断 $trash_path 定义的文件是否存在,如果不存在,那么就创建 $trash_path.if [ ...