首页 > 其他分享 >莫比乌斯反演——优美地解决容斥问题

莫比乌斯反演——优美地解决容斥问题

时间:2024-02-02 16:44:26浏览次数:24  
标签:lfloor limits dfrac sum 容斥 mu 反演 莫比

莫比乌斯反演

假设现在有一个函数 \(f\),令 \(F(n) = \sum\limits_{d | n} f(d)\),如 \(F(1) = f(1), F(4) = f(1) + f(2) + f(4)\),现在我们要通过 \(F\) 反推 \(f\),如 \(f(1) = F(1), f(4) = F(4) - F(2)\),这就是莫比乌斯反演。

可以推出这样的公式:\(F(n) = \sum\limits_{d | n}f(d) \Leftrightarrow f(n) = \sum\limits_{d|n}\mu(d)F(\dfrac nd)\),其中容斥系数 \(\mu\) 是 莫比乌斯函数

莫比乌斯函数

定义

\(\mu\) 为莫比乌斯函数,定义为:

\[\mu = \begin{cases}1 & n = 1 \\ 0 & n \text{ 含有平方因数} \\ (-1)^k & \rm{otherwise} \end{cases} \]

其中 \(k\) 为 \(n\) 的本质不同质因子数。

性质

  • 莫比乌斯函数是积性函数,\(\mu(x \times y) = \mu(x) \times \mu(y)\)。

  • \(\sum\limits_{d | n}\mu(d) = \begin{cases}1 & n = 1 \\ 0 & \rm{otherwise} \end{cases}\),即 \(\sum\limits_{d | n}\mu(d) = [n = 1]\)。

    证明:

    设 \(n = \prod\limits_{i = 1}^s p_i^{k_i}, n' = \prod\limits_{i = 1}^sp_i\),则 \(\sum\limits_{d | n}\mu(d) = \sum\limits_{d | n'}\mu(d) = \sum\limits_{i = 0}^s \dbinom si \cdot (-1)^i\)。

    由二项式定理中 \((1 + x)^n = \sum\limits_{i = 0}^n\dbinom nix^i\) 得 \(\sum\limits_{i = 0}^s \dbinom si \cdot (-1)^i = \begin{cases}0 & s \ne 0 \\ 1 & s = 0 \end{cases}\)。

    \(s = 0\) 时 \(n = 1\),得证。

    特殊地,我们把 \(\gcd(i, j)\) 带入到 \(n\) 中,可以得到一个结论性的式子:\([\gcd(i, j) = 1] = \sum\limits_{d | \gcd(i, j)}\mu(d)\)。

  • \(\sum\limits_{d | n}\dfrac{\mu(d)}d = \dfrac{\varphi(n)}n\)。

    证明:\(n = \sum\limits_{d | n} \varphi(d)\),套莫比乌斯反演,得 \(\varphi(n) = \sum\limits_{d | n}\mu(d) \cdot \dfrac nd\)。

实现

一般不会用到单个 \(\mu\),这里只给欧拉筛 \(\mathcal O(n)\) 求 \([1, n]\) 的 \(\mu\) 的方法(其实所有积性函数都可以用欧拉筛线性求)。

int mu[N];
bool vis[N];
vector<int> prime;

void getmu(int n) {
    mu[1] = 1;
    for (int i = 2; i <= n; i++) {
        if (!vis[i]) vis[i] = 1, prime.emplace_back(i);
        for (int p : prime) {
            if (p * i > n) continue;
            vis[p * i] = 1;
           	if (i % p == 0) break;
            mu[p * i] = -mu[i];
        }
    }
}

例题

P1447 [NOI2010] 能量采集

\[2\sum_{i = 1}^n\sum_{j = 1}^m\gcd(i, j) - nm \]

\(n, m \le 10^5\)。

核心问题在求 \(\sum\limits_{i = 1}^n\sum\limits_{j = 1}^m \gcd(i, j)\)。不妨假定 \(n \le m\)。

套路地,我们可以转而枚举 \(\gcd(i ,j)\) 的结果,统计个数。

设 \(f(k) = \sum\limits_{i = 1}^n\sum\limits_{j = 1}^m[\gcd(i, j) = k]\),然后你会发现这样还是不好做,就得用到这类题的另一个套路——容斥。

设 \(F(k) = \sum\limits_{i = 1}^n\sum\limits_{j = 1}^m[\gcd(i, j)|k]\),然后你会发现 \(F\) 特别好求,\(F(k) = \lfloor \dfrac nk \rfloor \times \lfloor \dfrac mk \rfloor\)。

再推出 \(F\) 和 \(f\) 的关系,是 \(F(k) = \sum\limits_{k | d}f(d)\),莫比乌斯反演:

\[f(k) = \sum\limits_{k | d}\mu(\dfrac kd)F(d) =\sum\limits_{d | k}\mu(\dfrac kd)\lfloor \dfrac nk \rfloor \lfloor \dfrac mk \rfloor \]

时间复杂度 \(\mathcal O(n \log n)\)。

trick:整除分块

随便整理一下还能有:

\[f(k) = \sum\limits_{i = 1}^{\lfloor\frac nk\rfloor}\mu(i)\lfloor\dfrac n{ik}\rfloor\lfloor\dfrac m{ik}\rfloor \]

然后 \(\lfloor\dfrac n{ik}\rfloor\lfloor\dfrac m{ik}\rfloor\) 相同的 \(i\) 可以放在同一块内计算,常数会小不少,时间复杂度也可以看作是 \(\mathcal O(n \sqrt{\log n})\)。

标签:lfloor,limits,dfrac,sum,容斥,mu,反演,莫比
From: https://www.cnblogs.com/chy12321/p/18003444

相关文章

  • <学习笔记> 二项式反演
    二项式反演证明我们设\(g(x)\)为任意\(x\)个集合的交集的大小,\(f(x)\)表示任意\(x\)个集合补集的交集大小。首先有(组合数学6.2)\[|\overline{S_1}\cap\overline{S_2}\cap...\cap\overline{S_{n-1}}\cap\overline{S_n}|=|U|-|{S_1}|-|{S_2}|-...+(-1)^n\times|{S......
  • 莫比乌斯反演
    莫比乌斯反演补了补暑假欠下的账(你怎么寒假才学)推狮子>>写代码。数论函数:定义域为正整数的函数。积性函数,对于一个数论函数,任意两个互质的正整数\(x,y\),都有\(f(xy)=f(x)f(y)\)完全积性函数就是不要求\(x,y\)互质的积性函数。常见的积性函数:单位函数\(\epsilon(n)......
  • 莫比乌斯反演
    前置:积性函数与狄利克雷卷积和整除分块两个基础积性函数:\(\varepsilon(n)=[n=1]\),\(1(n)=1\)。性质:\(\varepsilon*f=f\),\(f\)是任意函数。结论:\(f(n)\)是积性函数\(\iffg(n)=\displaystyle\sum_{d|n}f(d)\)是积性。证明:$\Rightarrow$方向:\(g=f*1\),狄利克雷卷积的性......
  • 【容斥反演】Nanami and Trip Schemes Count Problem
    链接给定\(k\)个特殊格子,求从(1,1)往右或往上走到(n,m),在经过不超过\(p\)个特殊格的情况下的方案数设\(f(S)\)表示钦定走S集合中格子的方案,\(g(S)\)为恰好走S集合的方案,那么\(f\)与\(g\)的关系就是一个\(\subseteq\)意义下的前缀和。即\[f(S)=\sum_{S\subs......
  • 【笔记】莫比乌斯反演
    0约定\([n]=[1,n]\cap\mathttZ\)1数论分块形如$S(n)=\sum\limits_{i=1}^nf(i)g(\left\lfloor\dfrac{n}{i}\right\rfloor)$。可以在\(O(\sqrtn)\)的时间复杂度内求解。1.1解法对于\(1\lei\le\sqrtn\),显然,\(i\)最多\(\sqrtn\)种取值,故而\(\left\l......
  • 【GEE】GEE反演地表温度相关问题说明(空洞、Landsat9数据集等)
    ​     之前分享了基于GEE-Landsat8数据集地表温度反演(LST热度计算),最近有很多小伙伴私信我很多问题,一一回复太慢了,所以今天写篇文章统一回答一下大家的问题。问题1:数据有很多空洞、某些条带没有数据等问题2:如何使用Landsat9数据进行温度反演问题3:该反演算法的来源......
  • 二项式反演学习笔记
    前置知识二项式定理:\((a+b)^n=\sum_{i=0}^n\binom{n}{i}a^ib^{n-i}\)。二项式反演反演公式1:\[f(n)=\sum_{i=0}^n\binom{n}{i}g(i)\iffg(n)=\sum_{i=0}^n(-1)^{n-i}\binom{n}{i}f(i)\]证明:\[\begin{aligned}\sum_{i=0}^n(-1)^{n-i}\binom{n}{i}f(i)&=\sum_{i=0......
  • 莫比乌斯反演学习笔记
    前置知识狄利克雷卷积:\(f*g=\sum_{d|n}f(d)g(\frac{n}{d})\)。积性函数,线性筛。数论分块。单位函数:\(\varepsilon(n)=[n=1]\)。(积性函数)常数函数:\(1(n)=1\)。(积性函数)莫比乌斯函数引理1:\(f(n)\)是积性函数等价于\(g(n)=\sum_{d|n}f(d)\)是积性函数。证明:显然,\(g=......
  • 容斥学习笔记
    目录容斥原理Min-Max容斥广义容斥原理容斥原理原理:\[|\bigcup_{i=1}^nA_i|=\sum_{j=1}^n(-1)^{j-1}\sum_{a_k\not=a_{k+1}}\bigcap_{l=1}^mA_{a_i}\]这东西学过小学奥数就会了。一些有用的结论:\[|\bigcap_{i=1}^nA_i|=|\Omega|-|\bigcup_{i=1}^n\overline{A_i......
  • 锐平?容斥一下好了!
    我爱说实话。但是我不爱跟陌生人说实话。所以在饭堂说了BasicFacts最基本的容斥二项式反演如果有一个函数\(G(n)=\sum\limits_{i=0}\limits^{n}{n\choosei}F(i)\)则有\(F(n)=\sum\limits_{i=0}\limits^{n}{n\choosei}(-1)^{n-i}G(i)\)板子题:CF285EMin......