zoukankan      html  css  js  c++  java
  • 【算法】莫比乌斯反演

      在正文开始之前感谢一下几篇论文 & 博客以及一位大佬 remoon_OFN

      1. 2016国家集训队论文任之洲《积性函数求和的几种方法》

      2. PoPoQQQ 的相关题解(%%%)。

      3. 当然除此之外还有很多……

      其实两三个月之前我就已经接触过反演了,但在那个时候对反演完全是一种懵逼的状态。重点其实还是在于通过自己多推式子,多化式子来理解和接受卷积的这样一种运算。当然,丰富的数论知识也是必不可少的(有时候一些题目会用到一些奇奇怪怪的性质)。实际上,反演就是已知一个函数 (g) 与 (f) 的关系,要通过 (f) 求出 (g),或通过 (g) 求出 (f)。反演,可以理解为一种变换。那么,莫比乌斯反演就是一种特别的变换:

    若我们有 (f = 1 * g)

    则有 (g = mu * f)

      这是一种式子的变形,当原本的式子中出现了(f) 或 (g) 的时候,可以考虑用另一个函数来替换它,从而找到一个易求得的式子。常用的卷积关系有如下几种:

    (mu * 1 = epsilon )

    (phi * 1 = id)

    (id * mu = phi)

      (以上式子中的函数均为积性函数)。注意:积性函数的卷积依然为积性函数,并且卷积满足结合律, 交换律,分配律。

      首先我们通过一道简单的题目来感受一下卷积和反演所起到的作用:题面在此:HAOI2011

      注意到(i, j) 都有一定的范围,但是这样的范围显然可以通过容斥来解决。所以问题转化为:如何快速求出

    (sum_{i = 1}^{n}sum_{j = 1}^{m}gcdleft ( i, j ight ) = k)

    发现如果是(i,j)的最大公约数为(k),那么(gcdleft ( frac{i}{k} , frac{j}{k} ight ) = 1)。

    所以我们改为枚举(frac{i}{k} , frac{j}{k}) :

    (sum_{i = 1}^{frac{n}{k}}sum_{j = 1}^{frac{m}{k}}gcdleft ( i, j ight ) = 1)

     注意到最后是一个判别式,所以是一个原函数(epsilon )

    联想到(mu * 1 = epsilon )

    我们将式子转化为(sum_{i = 1}^{frac{n}{k}}sum_{j = 1}^{frac{m}{k}}sum_{d|gcdleft ( i,j ight )}mu left ( d ight ))

    又因为这其中的(d)对于每一个是其倍数的二元组(left ( i,j ight ))产生贡献

    所以有(sum_{d = 1}^{n}mu left ( d ight )left lfloor frac{n}{dk} ight floorleft lfloor frac{m}{dk} ight floor)

    此时我们进行数论分块,前缀和优化一下求解就可以啦。

      

      大概有一些常见的套路:

        1. 与lcm,gcd有关都可以考虑转化为 (mu);

        2. 当发现 (mu) 做起来比较困难(如杜教筛不出)可以尝试用容斥转化为求 (phi),当枚举的上界是一个变量的时候,也可以转为求 (phi),往往比较方便;

        3.当式子中出现一个仅与一个枚举的变量相关的式子,例如枚举某个数的约数,可以考虑把它表示为 (h(i)) ,单独预处理;例如约数函数等可以在根号内处理出来的;

        4.如果有枚举两个数再乘积,一般都要转化为枚举乘积再枚举约数;

        5.如果要求的式子中有一些比较奇怪的函数,要分析函数的性质,转化成熟悉的 (mu phi) 等等。

        6.构造杜教的函数可以一层一层的转化,写成卷积的式子会比较便于化式子 & 转化;

     

      以下是几道题,按照个人认为的难度大致排了一下次序,应该会陆续写出题解:

      1.HAOI2011 Problem b

      2.YY的GCD

      3.CQOI2015选数

      4.SDOI2015约数个数和

      5.Crash的数字表格 / JZPTAB

      6.bzoj3309 DYZ loves math

      7.简单的数学题(杜教筛)

      8.SDOI2014数表

    ——————————————————————————————————————

      然后还有没做的,但感觉非常神的几道题:

      1.bzoj4174 tty的求助

      2.树上的毒瘤 bzoj3512 DZY Loves Math IV

      3.bzoj3601一个人的数论

      祝大家食用愉快……

    ——————————————————————————————————————

      一点更新:

      1.51nod1220 约数之和

      2.51nod1222 最小公倍数之和

      3.51nod1227 平均最小公倍数

      4.51nod1238 最小公倍数之和V3

      5.51nod1584 加权约数和

      6.[SDOI2017]数字表格

  • 相关阅读:
    JavaScript之DOM总结
    图书馆管理系统——模板建立
    JavaScript阶段总结(二)
    JavaScript阶段总结(一)
    机房重构反思之视图
    web服务代理
    若要在加载设计器前避免可能发生的数据丢失,必须纠正以下错误
    ”/”应用程序中的服务器错误
    无法显示您正在查找的页面,因为使用了无效的方法(http谓词)。
    hibernate树
  • 原文地址:https://www.cnblogs.com/twilight-sx/p/9160276.html
Copyright © 2011-2022 走看看