莫比乌斯(mobius)笔记
来源:互联网 发布:好心分手 知乎 编辑:程序博客网 时间:2024/05/21 19:37
mobius反演的本质是容斥原理,这在《组合数学》里面有提到
基本公式定理
mobius反演公式
F(n)f(n)=∑d∣nf(d)=∑d∣nμ(n/d)F(d)=∑d∣nμ(d)F(n/d)
另一种描述:F(d)f(d)=∑d∣nf(n)=∑d∣nF(n)μ(n/d) 经典公式
nϕ(n)∑d∣nμ(d)=∑d∣nϕ(d)=∑d∣nμ(d)nd=(n==d)
线性筛
我们可以用线性筛法处理积性函数,简单的说就是用每次用合数最小质因子去筛掉它,这能保证
void monius(){ cnt =0; mu[1] = 1; memset(prime,0,sizeof(prime)); for(int i = 2 ; i<maxn ; ++i){ if(!prime[i]){ prime[cnt++] = i; mu[i] =-1; } for(int j=0 ; j<cnt && i*prime[j]<maxn ; ++j){ prime[i*prime[j]] = 1; if(i%prime[j])mu[prime[j]*i] = -mu[i]; else { mu[i*prime[j]] = 0; break; } } } sum_mu[0] = 0; for(int i=1 ; i<maxn ; ++i) sum_mu[i] = sum_mu[i-1]+mu[i];}
void phi_table(){ cnt =0; phi[1] = 0; memset(prime,0,sizeof(prime)); for(int i = 2 ; i<maxn ; ++i){ if(!prime[i]){ prime[cnt++] = i; phi[i] =i-1; } for(int j=0 ; j<cnt && i*prime[j]<maxn ; ++j){ prime[i*prime[j]] = 1; if(i%prime[j])phi[prime[j]*i] = phi[i]*(phi[prime[j]]); else { phi[i*prime[j]]= phi[i]*prime[j]; break; } } }}
分块求和
如果说计算式中出现了
这是mobius中的常见的优化.
ll F(int n, int m, int d) { if (n > m) swap(n, m); ll ans = 0; n /= d, m /= d; for (int i = 1, last = 1; i <= n; i = last + 1) { last = min(n / (n / i), m / (m / i)); ans += (ll)(sum[last] - sum[i - 1]) * (n / i) * (m / i); } return ans;}
gcd相关
mobius最广的应用就是gcd相关的求和问题.
∑a≤N,b≤Mgcd(a,b)=1
令
显然将d设为就是求解d为1的问题,同时,若d为1我们也可以将其转化为
例题:
2301
格点可视性问题
∑f(d)∑⌊N/d⌋d|nF(n)
这个就必修使用双分套分块求和以达到
可以参考文献
例题:
能量采集
筛出每一个gcd(a,b)=d的个数 d=1,2,…,n
这个题目不需要mobius也能解决,主要是筛法应用.
题目:
GCD of Sequence.
参考
从N往1,运用筛法
一个分块求和的例子
Mophues
这个题目就是用了分块求和,求出对于每一个计算
参考文献:
贾智鹏 线性筛
ACDreamer
sengxian’s blog
0 0
- 莫比乌斯(mobius)笔记
- 【Mobius绮丽的辗转】莫比乌斯反演
- 莫比乌斯进阶:bzoj 2693 jzptab(Mobius)
- 莫比乌斯入门:bzoj 1101 Zap(Mobius)
- 莫比乌斯进阶:bzoj 4407 于神之怒加强版(Mobius)
- 莫比乌斯进阶:bzoj 3994 约数个数和(Mobius)
- 莫比乌斯反演例题(双解):bzoj 2045(Mobius)
- 【莫比乌斯反演】关于Mobius反演与lcm的一些关系与问题简化(BZOJ 2154 crash的数字表格&&BZOJ 2693 jzptab)
- 【莫比乌斯反演】关于Mobius反演与gcd的一些关系与问题简化(bzoj 2301 Problem b&&bzoj 2820 YY的GCD&&BZOJ 3529 数表)
- 【数论】Mobius反演学习笔记
- 莫比乌斯反演学习笔记
- 莫比乌斯反演学习笔记
- 莫比乌斯反演学习笔记
- 莫比乌斯学习笔记
- 莫比乌斯反演 学习笔记
- 莫比乌斯反演学习笔记
- 莫比乌斯反演学习笔记
- 莫比乌斯函数摘录笔记
- 更加成熟的领导力素质和学习敏感度
- SQLAlchemy ORM教程之一:Create
- 外观模式--高层调用,删繁就简(结构型模式04)
- TCP流量控制
- Oracle 11G在用EXP 导出时,空表不能导出解决
- 莫比乌斯(mobius)笔记
- Power of Three
- Git版本管理之旅(二)—— Git基本操作流程及相关命令
- 精灵图专题
- 淡入淡出轮播图
- 线性代数入门知识2(简单向量)
- SQLAlchemy ORM教程之二:Query
- 基于88E6095的链路冗余协议开发(三)
- BZOJ 1237: [SCOI2008]配对 一个神奇的东西然后简单DP