min_25 筛是由 min_25 大佬使用后普遍推广的一种新型算法,这个算法能在 \(O({n^{3\over 4}\over log~ n})\) 的复杂度内解决所有的积性函数前缀和求解问题(个人感觉套上素数定理证明的复杂度的话应该要把下面的 log 改成 ln ,不过也差不多啦~)

其实 min_25 筛的入门TXC 大佬的 blog 已经写的非常棒了QVQ

所以搬博客的话鉴于博主太懒了就不干了...直接帮 TXC 大佬安利博客完事

这篇博客主要的目的是证明网上大多没有的 min_25 筛的复杂度

所以你首先得学会 min_25 筛...

前置芝士

Min_25 筛

素数定理

proof

首先我们知道 min_25 筛做了两件事:

  1. 筛出一个所求函数的质数前缀和

  2. 递归/循环 得到所求函数的前缀和

对于第一个部分和第二个部分我们发现都有一个枚举质数的过程,那么我们需要先知道 n 范围内的质数个数

这就需要素数定理了,素数定理指:在 n 以内的素数个数是 \(O({n\over ln~ n})\) 的(下面为了方便起见就用 \(log ~n\) 代替这里的 \(ln~n\) 了 )

至于具体证明就不是本博客的任务了 QVQ

我们可以根据这一点结合埃氏筛法的复杂度得知:

我们在进行 min_25 中处理的 \(2\sqrt n\) 个数的函数前缀和时,一个数 x 被筛到过 \(O({\sqrt x\over log~ \sqrt x})\) 次

并且,无论是筛出所求函数关于 x 的质数前缀和还是全部的前缀和,都是这个次数(如果你写过循环代替递归版的 min_25 的话,就更加清楚这是为什么了)

这里可以贴出我写的一种 min_25 筛的版本(以筛 mu 的前缀和为例):

inline int ID(Rg int x){return x<=sq?id1[x]:id2[n/x];
}
inline int calc(Rg int k,int j){return w[k]>=p[j]?h[k]-j+1:0;
}
inline void Min_25(ll n){sq=sqrt(n),m=0; int tot=0;for(tot=1;1ll*p[tot]*p[tot]<=n;++tot);for(Rg ll l=1;l<=n;l=w[m]+1){w[++m]=n/(n/l),h[m]=w[m]-1,Mu[m]=0,//这里的 h 指质数个数的前缀和  , Mu 指莫比乌斯函数的前缀和 if(w[m]<=sq) id1[w[m]]=m;else id2[w[m]]=m;}for(Rg int j=1;j<=tot;++j){for(Rg int i=m;i&&1ll*p[j]*p[j]<=w[i];--i)h[i]-=h[ID(w[i]/p[j])]-j+1;}for(Rg int j=tot;j;--j){for(Rg int i=m,k;i&&1ll*p[j]*p[j]<=w[i];--i)Mu[i]-=Mu[k]-calc(k,j+1);}for(Rg int i=m;i;--i) Mu[i]-=h[i];
}

不压行真的好难受嘤嘤嘤...

我们发现上面筛出 mu 前缀和的时候两个处理部分都是用了极其类似的双重循环,(并且保证了答案是对的...),那么也就可以证明上面的说法了

所以我们就可以列出复杂度的式子:

\[O(Min\_25)=\sum_{x=1} ^{\sqrt n} O({\sqrt x\over log~ \sqrt x}) + \sum_{x=1} ^{\sqrt n} O({\sqrt {n\over x}\over log~ \sqrt {n\over x}})\]

主定理一波就是:

\[\sum_{x=1} ^{\sqrt n} O({\sqrt {n\over x}\over log~ \sqrt {n\over x}})\]

然后开始积分:

\[O\Big( \int_1^{\sqrt n} {\sqrt {n\over x}dx\over log~ \sqrt {n\over x}} \Big)\]

然后正常做法就难搞了,那么我们假一点,反正求的是大致复杂度,那么我们让下面的表达式直接变为 \(log~ n\)(这里把常数直接略去) 这样我们的任务就只剩下求上面表达式的积分了

至于这样为什么可行? 我们发现下面的表达式中有一个 log ,虽然我们让下面的表达式都变大了,但在 log 后,不过是少个常数的问题

如果这里有疑问的话,我们也可以把下面的表达式改成最小的 \(log~\sqrt{n}={1\over2}log~\sqrt{n}\),然后我们再把 \(1\over 2\) 忽略,这样的结果和上面是一样的...

于是乎原来的式子就变成了:

\[O\Big( {\int_1^{\sqrt n} \sqrt {n\over x}dx\over log~ n} \Big)\]

\[O\Big( {\sqrt n \int_1^{\sqrt n} x^{-{1\over2}} dx\over\ log~ n} \Big)\]

上面的那个积分已经是个多项式了:

\[O\Big( {\sqrt n ·( 2{\sqrt n}^{1\over2} )\over\ log~ n} \Big)\]

\[O\Big( { n^{1\over 2} · n^{1\over 4} \over\ log~ n} \Big)\]

\[O\Big( {n^{3\over 4} \over\ log~ n} \Big)\]

这样整个 min_25 筛的复杂度就证明完毕啦~

转载于:https://www.cnblogs.com/Judge/p/10694120.html

关于 min_25 筛的入门以及复杂度证明相关推荐

  1. Min_25筛学习笔记

    引入问题:求一个积性函数\(f(i)\)的前缀和 \[ \sum_{i=1}^nf(i) \] 其中\(f(i)\)满足对质数\(p\)有\(f(p)\)是关于\(p\)的低次多项式.\(f(p^c) ...

  2. Min_25筛学习Tip+链接

    前言 机房里差不多都会Min_25筛了,我也赶紧补一波坑v_v 参考: txc的Min_25筛学习笔记 yx的Min_25筛学习笔记 由于前面两位dalao的标题都是笔记,所以我这里就是小记了,因为这 ...

  3. [复习]莫比乌斯反演,杜教筛,min_25筛

    [复习]莫比乌斯反演,杜教筛,min_25筛 莫比乌斯反演 做题的时候的常用形式: \[\begin{aligned}g(n)&=\sum_{n|d}f(d)\\f(n)&=\sum_ ...

  4. 2018ACM-ICPC徐州赛区网络赛: D. Easy Math(Min_25筛)

    D. Easy Math Given a positive integers nn , Mobius function \mu(n)μ(n) is defined as follows: \displ ...

  5. [LOJ]#572. 「LibreOJ Round #11」Misaka Network 与求和 min_25筛+杜教筛

    Solution 推一下式子,容易得到一个线性做法:∑d=1nfk(d)((2∑i=1⌊ni⌋φ(i))−1)\sum_{d=1}^nf^k(d)((2\sum_{i=1}^{\lfloor{n\ov ...

  6. LOJ572. 「LibreOJ Round #11」Misaka Network 与求和 [莫比乌斯反演,杜教筛,min_25筛]

    传送门 思路 (以下令\(F(n)=f(n)^k\)) 首先肯定要莫比乌斯反演,那么可以推出: \[ ans=\sum_{T=1}^n \lfloor\frac n T\rfloor^2\sum_{d ...

  7. LOJ.6053.简单的函数(Min_25筛)

    题目链接 Min_25筛见这里: https://www.cnblogs.com/cjyyb/p/9185093.html https://www.cnblogs.com/zhoushuyu/p/91 ...

  8. loj #6053 简单的函数 min_25筛

    \(\color{#0066ff}{ 题目描述 }\) 某一天,你发现了一个神奇的函数\(f(x)\),它满足很多神奇的性质: \(f(1)=1\) \(f(p^c)=p \oplus c\) (\( ...

  9. 【UOJ#188】Sanrd(min_25筛)

    [UOJ#188]Sanrd(min_25筛) 题面 UOJ 题解 今天菊开讲的题目.(千古神犇陈菊开,扑通扑通跪下来) 题目要求的就是所有数的次大质因子的和. 这个部分和\(min\_25\)筛中枚 ...

最新文章

  1. IP白名单添加了当前IP,获取access_token时依然报出错误码40164的坑
  2. Matlab 线性规划问题模型代码
  3. RAC分解步骤之一,在oracle linux 4u4上安装oracle 10.2.0.1.0操作日志
  4. 上传大数据到SharePoint 2010
  5. BEA-141281 unable to get file lock, will retry ...
  6. [设计模式] 15 解释器模式 Interpreter
  7. C语言写俄罗斯方块,可上机运行
  8. USB OTG原理简述实际的USB连接线中,是没有USB_ID这根线的。 都是在接口部分直接拉死的。两用OTG设备都有一个Mini-AB插槽,所以一个Mini-A至Mini-B电缆可以直接将两个连接
  9. Cloning into ‘vue-element-admin‘... fatal: unable to access ‘https://github.com/PanJiaChen/vue-eleme
  10. 汇率换算(android安卓版)
  11. 中国新中产家庭“清洁观”:能躺着不站着,能靠科技不靠手
  12. Android 手机号输入格式化 3-3-4
  13. aria2 linux 手动安装,Linux安装aria2(示例代码)
  14. 自学编程的好方法,直接省了几万块钱报班,不收藏就可惜了
  15. vue 大量图片展示_Ant Design of Vue 展示多张图片
  16. 粤嵌6818开发板项目
  17. 3D建模新手入门到高端 电脑配置一览
  18. 面向对象 、面向过程
  19. Cookie的修改、删除,清除
  20. mel表达式_MEL语法

热门文章

  1. 造兵三国的服务器要维护多久,FAQ_造兵三国_九游手机游戏
  2. java md5算法_JAVA实现MD5算法
  3. 【二分法】计蒜客:01分数规划
  4. LeetCode 674 最长连续递增子序列
  5. matlab三角波发生器精度改为定点型,关于matlab simulink中三角波模块的问题!
  6. 404 单页应用 报错 路由_单页应用
  7. 【编辑器】VSCode+TEXLIVE环境配置,以SJTUthesis为测试用例
  8. UVa673 - Parentheses Balance
  9. USACO1.1.3 - Friday the Thirteenth
  10. 用计算机打李白的歌,抖音笨李白是什么歌 歌词中带有笨李白原版歌曲名字-游侠手游...