[学习笔记]min_25筛
想不到花了两个小时的时间看 \(min\_25\) 筛就看懂了 实际去追了一下魔禁3
我们先举个例子。如求
\[\sum_{i=1}^{n}f(i)\]
其中 \(f(i)\) 是积性函数,而且要满足 \(i\in prime\) 时 \(f(i)\) 是一个简单多项式,\(f(i^k)\) 可以快速计算出来。
怎么用呢
我们先丢开前缀和,计算
\[\sum_{i=1}^{n}[i\in prime]f(i)\]
那么现在我们要用到埃氏筛的思想。每次我们要减去新筛去的 \(f(i)\),然后减完了以后就是答案
\(g(n,j)\) 表示在前 \(j\) 个质数用埃氏筛筛完后的答案。
举个例子,\(g(10,2)=f(2)+f(3)+f(5)+f(7)+f(9)\)。令 \(P_j\) 为质数集合中第 \(j\) 小的质数,那么
\[g(n,j)=\sum_{i=1}^{n}[i\not |\ P_1,[i\not |\ P_2,...,[i\not |\ P_j]f(i)\]
现在,我们可以用 \(g(n,j-1)\) 来推出 \(g(n,j)\)
若 \(P_j^2>n\),那么 \(P_j\) 便对答案没有贡献了,\(g(n,j)=g(n,j-1)\)
若 \(P_j^2\leq n\),那么我们在 \(g(n,j-1)\) 的基础上要减掉一些东西。
那减掉什么呢?
首先,能被 \(P_j\) 筛掉的数一定被 \(P_j\) 整除,并且在除以 \(P_j\) 之后,最小质因子 \(\geq P_j\)
那么我们联想到了 \(g(\frac{n}{P_j},j-1)\)。但是发现 \(P_j\times P_1,P_j\times P_2,...,P_j\times P_{j-1}\) 已经被筛过了,所以要减去的应该是 \(f(P_j)\times (g(\frac{n}{P_j},j-1)-\sum_{i=1}^{j-1}f(P_i))\)
所以可以得到下面的式子:
\(g(n,j)= \begin{cases} g(n,j-1)&P_j^2>n\\ g(n,j-1)-f(P_j)\times [g(\frac{n}{P_j},j-1)-\sum_{i=1}^{j-1}f(P_i)]&P_j^2\leq n \end{cases}\)
这就是 \(min\_25\) 筛的精髓。其实本质上 \(min\_25\) 是个容斥算法。
值得一提的是,它的时间复杂度为 \(O(\frac{n^{\frac 34}}{\log n})\),可以当做 \(O(n^{\frac 23})\),在 \(n\leq 10^{11}\) 的数据下大概要花 \(500ms\) 左右。
[学习笔记]min_25筛的更多相关文章
- [学习笔记]Min-25筛
%%yyb %%zsy 一. 基本操作:筛1~N中的素数个数.n=1e9 设F(M,j)表示,2~M的所有数中,满足以下条件之一的数的个数:①x是质数②x最小质因子大于(注意是大于没有等号)$P_j$ ...
- Min_25筛 学习笔记
这儿只是一个简单说明/概括/总结. 原理见这: https://www.cnblogs.com/cjyyb/p/9185093.html https://www.cnblogs.com/zhoushu ...
- Min_25 筛 学习笔记
原文链接https://www.cnblogs.com/zhouzhendong/p/Min-25.html 前置技能 埃氏筛法 整除分块(这里有提到) 本文概要 1. 问题模型 2. Min_25 ...
- min_25筛学习笔记【待填坑】
看见ntf和pb两位大佬都来学了,然后就不自觉的来学了. 我们考虑这样一个问题. $$ans=\sum_{i=1}^nf(i)$$其中$1\leq n\leq 10^{10}$ 其中$f(i)$是一个 ...
- $Min\_25$筛学习笔记
\(Min\_25\)筛学习笔记 这种神仙东西不写点东西一下就忘了QAQ 资料和代码出处 资料2 资料3 打死我也不承认参考了yyb的 \(Min\_25\)筛可以干嘛?下文中未特殊说明\(P\)均指 ...
- 「学习笔记」Min25筛
「学习笔记」Min25筛 前言 周指导今天模拟赛五分钟秒第一题,十分钟说第二题是 \(\text{Min25}\) 筛板子题,要不是第三题出题人数据范围给错了,周指导十五分钟就 \(\text{AK ...
- Powerful Number 筛学习笔记
Powerful Number 筛学习笔记 用途 \(Powerful\ number\) 筛可以用来求出一类积性函数的前缀和,最快可以达到根号复杂度. 实现 \(Powerful\ number\) ...
- Min_25筛 学习小记
前言 为什么叫学习小记呢?因为暂时除了模板题就没有做其他的东西了.(雾 这个东西折磨了我一整天,看得我身不如死,只好结合代码理解题解,差点死在机房.(话说半天综合半天竞赛真是害人不浅) 为了以后忘了再 ...
- min-25筛学习笔记
Min_25筛简介 \(\text{min_25}\)筛是一种处理一类积性函数前缀和的算法. 其中这类函数\(f(x)\)要满足\(\sum_{i=1}^{n}[i\in prime]\cdot f( ...
随机推荐
- 【搜索】Shuffle'm Up
运用第i个s12和第i+1个s12中,每个位置具有的确定的映射关系: pos = pos * 2 + 1 (pos < c) pos = pos * 2 - c * 2 (pos >= c ...
- javascript声明对象时 带var和不带var的区别
2015/11/25补充: 关于变量声明这里有详细的解释: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Stat ...
- 2016-2017-2 20155312 实验三敏捷开发与XP实践实验报告
1.研究code菜单 Move Line/statement Down/Up:将某行.表达式向下.向上移动一行 suround with:用 try-catch,for,if等包裹语句 comment ...
- Bubble(冒泡排序)————Java
用Java进行冒泡排序的代码,利用一个flag进行优化算法: import java.util.Scanner; public class Bubble_Sort { private static i ...
- MVC 开发模式
1.M:Model 模型:实体类和业务和dao 2.V:view 视图:JSP 3.C:Controller 控制器:servlet 3.1 作用:视图和逻辑分离 4.MVC适用场景:大型项目开 ...
- Python开课复习9-28
一.什么是迭代器#迭代器即迭代的工具,那什么是迭代呢?#迭代是一个重复的过程,每次重复即一次迭代,并且每次迭代的结果都是下一次迭代的初始值 举例: l=[1,2,3] count=0 while co ...
- 证明2x2正交矩阵专置后还是正交矩阵
[ x1 x2 y1 y2] x1^2+y1^2=1 x2^2 + y2^2=1 x1*x2 + y1*y2=0 如果专置后还是 x1^2 + x2^2=1 y1^2 +y2^2=1 x1* ...
- tflite笔记
固化模型 方法一:freeze_graph方法 把tf.train.write_graph()生成的pb文件与tf.train.saver()生成的chkp文件固化之后重新生成一个pb文件 with ...
- SQL中的split方法的使用
参数说明: 1.@String :需要split的字符串 2.@Delimiter :格式化时分隔符 3.@index :返回split后数组的值 ), ),)) ) AS BEGIN )) ) DE ...
- dj cookie与session 2
def login_session(request): if request.method == "POST": user = request.POST.get("use ...