[知识点]莫比乌斯反演模型进阶

哪来什么进阶QAQ,只不过是被虐得更惨了

总结了一下lc传授的套路与模型

一般来讲是求与gcd有关的。那么可以反演得到模型:

令f(d)为1<=x<=n,1<=y<=m且gcd(x,y)=d的数对(x,y)的个数

然后可以枚举d进行一波操作,然后再换个元,大概可以得到

通过预处理出g(x)和前缀和,分块去计算答案,以达到单次询问√n

至于这个处理g(x),我们通常用以下方法:

借鉴线性筛,分类操作

①x为质数时

②i与p互质时求i*p

③i%p==0时求i*p(此时break)

通常第三种情况我们需要使i*p=i1*py,此时i1与p互质,这样就可以转化为情况二去解决问题了

那么我们怎么求得i1以及y呢?简单粗暴可以暴力去除,最坏复杂度是O(logn)

我们还可以O(1)去求:

对于每一个数,记录它的最小质因数P[i]、它的幂K[i]、还有G[i*p]=P[i*p]K[i*p]

由于筛的时候每个数都会被它的最小质因数筛掉,所以在break之前,p为i*p的最小质因数

情况二的时候,P[i*p]=p,K[i*p]=1,G[i*p]=p

情况三的时候,由于i*p已经记录最小质因数p了,只需将K[i*p]=K[i]+1就好了,同时G[i*p]=G[i]*p

需要求情况三中的y和i1的时候,K数组里就是y,可以O(1)求出 i1=(i*p)/G[i*p]  (撒花!!)

此类型题目:

[BZOJ 3529]数表

[BZOJ 3309]DZY Loves Math

时间: 2024-08-30 16:43:58

[知识点]莫比乌斯反演模型进阶的相关文章

[知识点]莫比乌斯反演入门

因为今天有较为充足的时间,于是果断入坑反演OvO 直接上公式和概念: 定理:和是定义在非负整数集合上的两个函数,并且满足条件,那么我们得到结论 在上面的公式中有一个函数,称其为莫比乌斯函数 它的定义如下: (1)若,那么 (2)若,均为互异素数,那么 (3)其它情况下 对于函数,它有如下的常见性质: (1)对任意正整数有 (2)对任意正整数有 (3)为积性函数 数论上积性函数的定义:     积性函数的性质: ①  ②积性函数的前缀和也是积性函数 由此可以线性求出莫比乌斯函数: mu[1]=1;

hdu1695 GCD(莫比乌斯反演)

题意:求(1,b)区间和(1,d)区间里面gcd(x, y) = k的数的对数(1<=x<=b , 1<= y <= d). 知识点: 莫比乌斯反演/*12*/ 线性筛求莫比乌斯反演函数: void Init() { memset(vis,0,sizeof(vis)); mu[1] = 1; cnt = 0; for(int i=2; i<N; i++) { if(!vis[i]) { prime[cnt++] = i; mu[i] = -1; } for(int j=0;

莫比乌斯反演(入门)

细细算来,看反演已经有一两个星期了 刚开始的时候也是走了不少的弯路 和其他的算法一样,只要你懂了,就会有一种不过如此的感觉(误 感觉反演还是刚入门,不过还是先写一篇不完全的总结吧,不然过段时间就要忘记了 虽说看反演看了好久才懂,但是现在回头看看,其实很多时间还是花费在弯路上,真正的输出时间不过是最近的一两天 建议的前置技能: 容斥的简单应用 唯一分解定理 欧拉函数的定义 积性函数的定义 然后就可以看反演啦 反演推荐的资料还是贾志鹏线性筛 不要在电脑上直接过一遍就算看过了,这个资料上面有一些不加证

BZOJ 4036: [HAOI2015]按位或 集合幂函数 莫比乌斯变换 莫比乌斯反演

http://www.lydsy.com/JudgeOnline/problem.php?id=4036 http://blog.csdn.net/lych_cys/article/details/50898726 http://blog.csdn.net/qq_21995319/article/details/49800999 for(int i=1;i<=1;i++) for(int j=1;j<=1;j++) f[i○j]=a[i]*b[j]; 当○为按位或时,这种运算就称为集合并卷积.

bzoj 2820 / SPOJ PGCD 莫比乌斯反演

那啥bzoj2818也是一样的,突然想起来好像拿来当周赛的练习题过,用欧拉函数写掉的. 求$(i,j)=prime$对数 \begin{eqnarray*}\sum_{i=1}^{n}\sum_{j=1}^{m}[(i,j)=p]&=&\sum_{p=2}^{min(n,m)}\sum_{i=1}^{\lfloor\frac{n}{p}\rfloor}\sum_{j=1}^{\lfloor\frac{m}{p}\rfloor}[i⊥j]\newline&=&\sum_{p=

hdu1695(莫比乌斯反演)

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1695 题意: 对于 a, b, c, d, k . 有 x 属于 [a, b],  y 属于 [c, d], 求 gcd(x, y) = k 的 x, y 的对数 . 其中 a = b = 1 . 注意: (x, y), (y, x) 算一种情况 . 思路: 莫比乌斯反演 可以参考一下: http://blog.csdn.net/lixuepeng_001/article/details/5057

算法学习——莫比乌斯反演(1)

.. 省选GG了,我果然还是太菜了.. 突然想讲莫比乌斯反演了 那就讲吧! 首先我们看一个等式-- (d|n表示d是n的约束) 然后呢,转换一下 于是,我们就发现! 没错!F的系数是有规律的! 规律is here! 公式: 这个有什么卵用呢? 假如说有一道题 F(n)可以很simple的求出来而求f(n)就比较difficult了,该怎么办呢? 然后就可以用上面的式子了 是莫比乌斯函数,十分有趣 定义如下: 若d=1,则=1 若d=p1*p2*p3...*pk,且pi为互异素数,则=(-1)^k

bzoj2301 [HAOI2011]Problem b【莫比乌斯反演 分块】

传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=2301 很好的一道题.首先把每个询问转化为4个子询问,最后的结果就是这四个子询问的记过加加减减,类似二维前缀和.那么问题转化为在1 <= x <= lmtx, 1 <= y <= lmty时gcd(x, y) == k的对数,这个问题在转化一下,转化成1 <= x <= lmtx / k,1 <= y <= lmty / k时x与y互质的对数.莫比乌斯反

BZOJ2301: [HAOI2011]Problem b 莫比乌斯反演

分析:对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数. 然后对于求这样单个的gcd(x,y)=k的,我们通常采用莫比乌斯反演 但是,时间复杂度是O(n*(n/k))的,当复杂度很坏的时候,当k=1时,退化到O(n^2),超时 然后进行分块优化,时间复杂度是O(n*sqrt(n)) #include<cstdio> #include<cstring> #include<queue