神佬yyb

神佬zsy

想不到花了两个小时的时间看 \(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筛的更多相关文章

  1. [学习笔记]Min-25筛

    %%yyb %%zsy 一. 基本操作:筛1~N中的素数个数.n=1e9 设F(M,j)表示,2~M的所有数中,满足以下条件之一的数的个数:①x是质数②x最小质因子大于(注意是大于没有等号)$P_j$ ...

  2. Min_25筛 学习笔记

    这儿只是一个简单说明/概括/总结. 原理见这: https://www.cnblogs.com/cjyyb/p/9185093.html https://www.cnblogs.com/zhoushu ...

  3. Min_25 筛 学习笔记

    原文链接https://www.cnblogs.com/zhouzhendong/p/Min-25.html 前置技能 埃氏筛法 整除分块(这里有提到) 本文概要 1. 问题模型 2. Min_25 ...

  4. min_25筛学习笔记【待填坑】

    看见ntf和pb两位大佬都来学了,然后就不自觉的来学了. 我们考虑这样一个问题. $$ans=\sum_{i=1}^nf(i)$$其中$1\leq n\leq 10^{10}$ 其中$f(i)$是一个 ...

  5. $Min\_25$筛学习笔记

    \(Min\_25\)筛学习笔记 这种神仙东西不写点东西一下就忘了QAQ 资料和代码出处 资料2 资料3 打死我也不承认参考了yyb的 \(Min\_25\)筛可以干嘛?下文中未特殊说明\(P\)均指 ...

  6. 「学习笔记」Min25筛

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

  7. Powerful Number 筛学习笔记

    Powerful Number 筛学习笔记 用途 \(Powerful\ number\) 筛可以用来求出一类积性函数的前缀和,最快可以达到根号复杂度. 实现 \(Powerful\ number\) ...

  8. Min_25筛 学习小记

    前言 为什么叫学习小记呢?因为暂时除了模板题就没有做其他的东西了.(雾 这个东西折磨了我一整天,看得我身不如死,只好结合代码理解题解,差点死在机房.(话说半天综合半天竞赛真是害人不浅) 为了以后忘了再 ...

  9. min-25筛学习笔记

    Min_25筛简介 \(\text{min_25}\)筛是一种处理一类积性函数前缀和的算法. 其中这类函数\(f(x)\)要满足\(\sum_{i=1}^{n}[i\in prime]\cdot f( ...

随机推荐

  1. JavaScript中hasOwnProperty函数

      JavaScript中hasOwnProperty函数方法是返回一个布尔值,指出一个对象是否具有指定名称的属性. 使用方法: object.hasOwnProperty(proName) 其中参数 ...

  2. 导入mysql报错问题

    今天数据导入报错:Got a packet bigger than‘max_allowed_packet’bytes的问题 2个解决方法: 1.临时修改:mysql>set global max ...

  3. python学习 day2 (3月2日)

    .if if else 和 if elif else 的区别是: 前者 判断第一个 判断完第二个 之后还会执行else: 后者是只有满足条件(即都不符合if.elif里的条件时才会进入else) 不清 ...

  4. com/mysql/jdbc/Driver : Unsupported major.minor version 52.0

    解决方案: 1.jdk7+老版5.0驱动com/mysql/jdbc/Driver 2.jdk8+新版6.0驱动com/mysql/cj/jdbc/Driver

  5. 如何将frm文件导入MySql数据库

    只要在mysql的安装文件中找到data文件夹,然后在里面建立一个文件夹,比如test.这个test其实就对应着数据库的名称,所以,你想要起什么样的数据库名称就把文件夹起什么名字. 然后把.frm文件 ...

  6. 防止网站被镜像,被iframe

    1.防止网站被镜像 现象:他人域名访问到的是我的网站解析的ip地址我的 解决方法: http.ini里可以这样写 "RewriteCond Host: !^www.web\.cn$ Rewr ...

  7. join和split 的使用

    var abc = new Array(a,b,c,d,e); abc.join('-') // 结果 : a-b-c-d-e-f var obk = 'a-b-c-d-e'; obk.split(' ...

  8. 委托构造函数(c++11)

    1.概念 1)委托构造函数也是构造函数,它也有形参列表,它将实参传递给其他的构造函数来初始化类对象,像是把自己的一些(或者全部)构造职责委托给其他构造函数一样

  9. 范围for循环(c++11)

    1.概念 1)c++11新标准下用范围for循环来遍历序列 2)使用范围for循环时,如果要修改序列中的元素,则必须把循环变量定义成引用类型: int main() { string s = &quo ...

  10. JavaScript常用定义和方法

    1.字符串一些常用方法,注意,调用这些方法本身不会改变原有字符串的内容,而是返回一个新字符串.toUpperCase()把一个字符串全部变为大写: var s = 'Hello'; s.toUpper ...