zoukankan      html  css  js  c++  java
  • 另一种更为优秀的快速筛莫比乌斯函数的筛法

    关于 (mu) 函数的另一种较快速的筛法

    (Q: sum_{i=1}^n mu(i))

    注:接下来的两步,是最精彩的,也是最令人窒息的两步操作

    首先,必然有一份贡献为 (mu(1) = 1) 那么,我们先将他给单独拿出来,又因为 (mu) 函数取值只为 (0,1,-1) ,所以我们可以再进行一点耐人寻味的操作

    原式可变成 :

    (1-sum_{i=2}^n (0-mu(i)))

    然而对于这个 (0) ,我们还可以再变成一个妙妙的样子

    (1-sum_{i=2}^n(sum_{jmid i}mu(j) - mu(i)))

    紧接着,我们换一个角度来陈述这个式子,我们来枚举每个 (mu(i)) 出现的次数来统计它们的贡献

    变化如下:

    (1-sum_{j=2}^nmu(j)(lfloorfrac{n}{j} floor-1))

    显然,当 (j > frac{2}{n}) 时,它的贡献为 (0)

    所以原式最终化简为:

    (1-sum_{j=2}^{lfloorfrac{n}{2} floor}mu(j)(lfloorfrac{n}{j} floor-1))

    显然为了配合下底分块的方法来处理,我们需要线筛 (sum_{j=2}^{lfloorfrac{n}{2} floor}mu(j)) ,然后用前缀和的操作来解决问题

    从而我们递归处理这一部分

    当然,我们也可以先预处理出较小范围的 (mu) 的值

    二者结合则可以较为优雅的解决这一系列的问题了

    心如花木,向阳而生。
  • 相关阅读:
    模板-树链剖分
    bzoj2523 聪明的学生
    P1220 关路灯
    BZOJ3572 [Hnoi2014]世界树
    BZOJ4013 [HNOI2015]实验比较
    BZOJ4012 [HNOI2015]开店
    BZOJ4011 [HNOI2015]落忆枫音
    BZOJ4009 [HNOI2015]接水果
    BZOJ4010 [HNOI2015]菜肴制作
    BZOJ4008 [HNOI2015]亚瑟王
  • 原文地址:https://www.cnblogs.com/LLppdd/p/8410607.html
Copyright © 2011-2022 走看看