「笔记」$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) //返回数组 ...
随机推荐
- Element 对话框简单使用
官方文档介绍的是页内对话框,但没有基于组件的对话框,这里记录一下,原理就是父子传值是否显示 父页导入组件 <template> <div class="home" ...
- Spring Cloud Eureka 之服务端自我注册
Eureka服务端实现了一种自我注册机制,涉及配置项: eureka.client.register-with-eureka spring.application.name Eureka Server ...
- 聊一聊开闭原则(OCP).
目录 简述 最早提出(梅耶开闭原则) 重新定义(多态开闭原则) 深入探讨 OCP的两个特点 对外扩展开放(Open for extension) 对内修改关闭 抽象 关闭修改.对外扩展? 简述 在面向 ...
- IP 地址无效化
给你一个有效的 IPv4 地址 address,返回这个 IP 地址的无效化版本. 所谓无效化 IP 地址,其实就是用 "[.]" 代替了每个 ".". 示例 ...
- php学习记录,使用script脚本
echo "<script>alert()</script>"; 原来还能这么用,之前以为echo就是普通的用来打印 同时还可以在script标签下使用lo ...
- xml字符串转成数组(php)
1 $str = '<xml> 2 <ToUserName> <![CDATA[gh_fc0a06a20993]]> </ToUserName> 3 & ...
- Linux下Nodejs安装(完整详细)转
Linux下安装有两种方式,一个是下载源码make编译安装. 另外一种是比较推荐的,直接下载编译好的二进制,官方比较推荐后者. //Linux 64bit version wget --no-chec ...
- ecshop不同的文章分类使用不同的模板的方法
ecshop文章模板做的太简单,页面很丑,怎么才能实现不同的文章使用不同的模板呢,方法是有的,就是没有shopex那么方便,但还可以实现,只要能用就行. 1.打开article_cat.php文件,在 ...
- Java基础系列(5)- 使用IDEA开发
IDEA开发 下载安装IDEA https://www.cnblogs.com/gltou/p/14956060.html 使用IDEA编写helloworld 踩坑总结 run的时候提示" ...
- springweb项目自定义拦截器修改请求报文头
面向切面,法力无边,任何脏活累活,都可以从干干净净整齐划一的业务代码中抽出来,无非就是加一层,项目里两个步骤间可以被分层的设计渗透成筛子. 举个例子: 最近我们对接某银行接口,我们的web服务都是标准 ...