算法狄利克雷卷积 & 莫比乌斯反演

Posted twilight-sx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法狄利克雷卷积 & 莫比乌斯反演相关的知识,希望对你有一定的参考价值。

  虽然标题是狄利克雷卷积 & 莫比乌斯反演,但这篇文章应该说重在自己对于莫比乌斯反演 + 线性筛的一些感受。

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

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

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

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

 

  其实两三个月之前我就已经接触过反演了,但在那个时候对反演完全是一种懵逼的状态。重点其实还是在于通过自己多推式子,多化式子来理解和接受卷积的这样一种运算。当然,丰富的数论知识也是必不可少的(有时候一些题目会用到一些奇奇怪怪的性质)。总之,反演是一个非常神奇的算法:

内容为:若我们有 (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.HAOI2011 Problem b

  2.YY的GCD

  3.SDOI2015约数个数和

  4.Crash的数字表格 / JZPTAB

  5.bzoj3309 DYZ loves math

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

  7.SDOI2014数表

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

  1.bzoj4174 tty的求助

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

  3.bzoj3601一个人的数论

  祝大家食用愉快……

以上是关于算法狄利克雷卷积 & 莫比乌斯反演的主要内容,如果未能解决你的问题,请参考以下文章

狄利克雷卷积 && 莫比乌斯反演

数论入门——莫比乌斯函数,欧拉函数,狄利克雷卷积,线性筛,莫比乌斯反演,杜教筛

狄利克雷卷积及莫比乌斯反演

狄利克雷卷积和莫比乌斯反演

从基础数论函数说起3:莫比乌斯反演

[积性函数杜教筛莫比乌斯函数入门]学习总结