神佬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. Python中sys和os模块的区别

    sys: This module provides access to some variables used or maintained by the interpreter and to func ...

  2. delphi 中的win32 以外到平台的字符串处理一定慢吗?(转载)

    原始连接:http://rvelthuis.blogspot.tw/2018/01/strings-on-other-platforms-than-32-bit.html Strings too sl ...

  3. centos 7 搭建pip源

    一.安装pip2pi工具: pip install pip2pi 或编译: git clone https://github.com/wolever/pip2pi cd pip2pi python s ...

  4. 796. Rotate String

    class Solution { public: bool rotateString(string A, string B) { if(A.length()==B.length()&& ...

  5. 2019.01.02 poj1322 Chocolate(生成函数+二项式定理)

    传送门 生成函数好题. 题意简述:一个袋子里有ccc种不同颜色的球,现要操作nnn次,每次等概率地从袋中拿出一个球放在桌上,如果桌上有两个相同的球就立刻消去,问最后桌上剩下mmm个球的概率. 第一眼反 ...

  6. 2018.11.05 bzoj3124: [Sdoi2013]直径(树形dp)

    传送门 一道sbsbsb树形dpdpdp 第一问直接求树的直径. 考虑第二问问的边肯定在同一条直径上均是连续的. 因此我们将直径记下来. 然后对于直径上的每一个点,dpdpdp出以这个点为根的子树中不 ...

  7. 在 Linux/windows下 命令行中使用和执行 PHP 代码[交互式php]

    [注释]在ubuntu下,升级php到7.1版本,虽然提示的是Interactive mode enabled, 但实际上可以直接书写命令,和interactive shell效果一样. 一:wind ...

  8. math.net 拟合

    参考:http://blog.csdn.net/ztmsimon/article/details/50524392 在论坛中总看到有人在说Math.NET Iridium,查了一下,现在被整合到Mat ...

  9. Oracle修改数据库的日期

    ---Oracle数据库更新时间字段数据时的sql语句---格式化时间插入 update t_invite_activityinfo set endtime=to_date('2019-10-30 1 ...

  10. Oracle中根据当前时间和活动类型去数据库查询活动id

    活动类型默认是1,代表邀请好友 select * from t_invite_activityinfo twhere sysdate >= t.begintime and sysdate< ...