「笔记」$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) //返回数组 ...
随机推荐
- Sentry Web 性能监控 - Trends
系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentry-CLI - 30 秒上手 Source Maps Sentry For ...
- 尚硅谷Java基础学习笔记
综述: Java学习图谱: 常见dos命令: 操作案例: Java语言的特点: 面向对象 两个基本概念:类.对象 三个基本特性:封装.继承.多态 健壮性.可继承性 write once,run any ...
- 图论---最小生成树----普利姆(Prim)算法
普利姆(Prim)算法 1. 最小生成树(又名:最小权重生成树) 概念:将给出的所有点连接起来(即从一个点可到任意一个点),且连接路径之和最小的图叫最小生成树.最小生成树属于一种树形结构(树形结构是一 ...
- CodeForce-734C Anton and Making Potions(贪心+二分)
CodeForce-734C Anton and Making Potions C. Anton and Making Potions time limit per test 4 seconds m ...
- Django学习day13随堂笔记
每日测验 """ 今日考题 1.什么是django中间件,它的作用是什么,如何自定义中间件,里面有哪些用户可以自定义的方法,这些方法有何特点 2.基于django中间件的 ...
- 如何快速下载ubuntu镜像
使用国内镜像地址下载: 中科大http://mirrors.ustc.edu.cn/ubuntu-releases/ 阿里云开源镜像站http://mirrors.aliyun.com/ubuntu- ...
- jenkins的目录介绍
jenkins的目录介绍: /etc/init.d/jenkins #jenkins的启动文件 /etc/logrotate.d/jenkins /etc/sysconf ...
- sqlalchemy ————关联表
1.创建模型的时候做外键关联 class UI_ID(db.Model): __tablename__ = 'ui_id' id = db.Column(INTEGER(11), primary_ke ...
- web自动化:IE11运行Python+selenium程序
from selenium import webdriver # 运行此脚本前必须按要求修改注册表'''[HKEY_CURRENT_USER\Software\Microsoft\Internet E ...
- P3214-[HNOI2011]卡农【dp】
正题 题目链接:https://www.luogu.com.cn/problem/P3214 题目大意 一个由\(1\sim n\)的所有整数构成的集合\(S\),求出它的\(m\)个不同非空子集满足 ...