目录
(该小结为不定期更新,如有代码缺失和内容错误或不一致,以及其他可以改进的地方,请私信指出,在下定不胜感激)
中等组合计数与初等组合计数大有不同,有人指出,初等组合计数看天赋,中等组合计数看套路,这句话很好地说明了我接下来,即将呈现给各位的知识的特点,也提示了应有的学习态度,我承认此处知识确实很高深,不好入门,本人也是在毫无外援,靠几篇博客所学,特此感谢peng-ym,我已体会到了单打独斗的痛苦与折磨了,特此作此小结,希望后人能少走弯路,直达思维迷宫的终点。
设有集合\(\{S_1,S_2,...,S_n\}\),\(|S_i|\)表示集合大小,有:
\[|\bigcup_{i=1}^{n}S_i|=\sum_{i=1}^n|S_i|-\sum_{1\leq i<j\leq n}|S_i\bigcap S_j|+\sum_{1\leq i<j<k\leq n}|S_i\bigcap S_j\]
\[\bigcap S_k|-...+[-(-1)^n]|\bigcap_{i=1}^nS_i|\]
用途:直接做组合计数问题不好做,可以考虑容斥,
时间复杂度:\(O(2^n)\)
证明:
不妨提出交集集合数的概念,为几个集合交集,而集合重复次数,为该集合在进行大小计算时被累加的次数,于是可以列表
交集集合数 | 1 | 2 | 3 | ... | i | ... | n |
---|---|---|---|---|---|---|---|
符号表示 | \(S_i\) | \(S_i\bigcap S_j\) | \(S_i\bigcap S_j \bigcap S_k\) | ... | \(\bigcap_{j=1}^iS_j\) | ... | \(\bigcap_{j=1}^nS_j\) |
集合重复次数 | |||||||
当前操作 |
当前操作的意思是是否累加该个集合大小,于是
1.考虑原式的第1项
交集集合数 | 1 | 2 | 3 | ... | i | ... | n |
---|---|---|---|---|---|---|---|
符号表示 | \(S_i\) | \(S_i\bigcap S_j\) | \(S_i\bigcap S_j \bigcap S_k\) | ... | \(\bigcap_{j=1}^iS_j\) | ... | \(\bigcap_{j=1}^nS_j\) |
集合重复次数 | \(C_1^1\) | \(C_2^1\) | \(C_3^1\) | ... | \(C_i^1\) | ... | \(C_n^1\) |
当前操作 | + |
2.考虑原式的第2项
交集集合数 | 1 | 2 | 3 | ... | i | ... | n |
---|---|---|---|---|---|---|---|
符号表示 | \(S_i\) | \(S_i\bigcap S_j\) | \(S_i\bigcap S_j \bigcap S_k\) | ... | \(\bigcap_{j=1}^iS_j\) | ... | \(\bigcap_{j=1}^nS_j\) |
集合重复次数 | \(C_1^1\) | \(C_2^1-C_2^2\) | \(C_3^1-C_3^2\) | ... | \(C_i^1-C_i^2\) | ... | \(C_n^1-C_n^2\) |
当前操作 | \(+\) | \(-\) |
3.考虑原式的第3项
交集集合数 | 1 | 2 | 3 | ... | i | ... | n |
---|---|---|---|---|---|---|---|
符号表示 | \(S_i\) | \(S_i\bigcap S_j\) | \(S_i\bigcap S_j \bigcap S_k\) | ... | \(\bigcap_{j=1}^iS_j\) | ... | \(\bigcap_{j=1}^nS_j\) |
集合重复次数 | \(C_1^1\) | \(C_2^1-C_2^2\) | \(C_3^1-C_3^2+C_3^3\) | ... | \(C_i^1-C_i^2+C_i^3\) | ... | \(C_n^1-C_n^2+C_n^3\) |
当前操作 | \(+\) | \(-\) | \(+\) |
....
于是我们可以得到对于i个集合交集的重复次数,表达式应为\(C_i^1-C_i^2+C_i^3-...+[-(-1)^i]C_i^i=\sum_{j=1}^i[-(-1)^i]C_i^j\),而又有引理:
\[0=0^i=(1-1)^i=\sum_{j=0}^i(-1)^jC_i^j\]
\[\sum_{j=1}^i(-1)^jC_i^j=-1\Rightarrow\sum_{j=1}^i[-(-1)]^jC_i^j=1\]
故上式结果为1,于是我们可以说每个交集部分当且仅当重复一次,故得证。
设\(\{n_1a_1,n_2a_2,...,n_ka_k\}\)表示有\(n_1\)个\(a_1\),\(n_2\)个\(a_2\)....的可重集合,从中取r个元素的方案数为
\[C_{k+r-1}^{k-1}-\sum_{i=1}^kC_{k+r-n_i-2}^{k-1}+\sum_{1\leq i<j\leq k}C_{k+r-n_i-n_j-3}^{k-1}-...+(-1)^kC_{k+r-(k+1)-\sum_{j=1}^kn_j}^{k-1}\]
证明:
所有方案数(不考虑元素的个数,即设其数量无限)不难得知是原式第一项,而当考虑其中一种元素必然不满足条件不难得知为原式第二项,但是如此导致方案数减多了,于是加回两种元素必然选多了,以此类推,不难得知为容斥。
数学语言:\(n=p_1^{c_1}p_2^{c_2}...p_m^{c_m}(gcd(p_1,p_2,...,p_m)==1)\)
文字语言:任何一个数有且仅能被分解成几个质因数之积。
用途:约数问题隐含条件
证明:\(c/i\in[1,\sqrt n]\),故得证。
定义:\((f*g)(n)=\sum_{d|n}f(d)g(n/d)\)(读做f卷g)
性质:
用途:
完全积性函数:
定义:\(f(pq)=f(p)f(q)\)
积性函数:
定义:\(f(pq)=f(p)f(q)(gcd(p,q)==1)\)
证明:
设\(h=f*g,gcd(p,q)==1\),有
\[h(p)h(q)=\sum_{x|p}f(x)g(p/x)*\sum_{y|q}f(y)g(q/y)\]
又有对于任意\(x,y,f(xy)=f(x)f(y),g(pq/xy)=g(p/x)g(q/y)\),故x,y对应pq的一个约数d的\(f(d),g(pq/d)\),而相反地\(f(d),g(pq/d)\)只能唯一分解成一对x,y,故得证。
特别地有\(f*I\)
由唯一分解定理\(f(n)=f(p_1^{c_1})f(p_2^{c_2})...f(p_m^{c_m})\)
设\(f\)为积性函数,\(f*\epsilon=f\)
此处重点介绍Euler筛\(O(n)\)递推积性函数:
基本思路:
符号:\(I\)
表达式:\(I(n)=1\)
性质:
符号:\(id\)
表达式:\(id(n)=n\)
\(id^2(n)=n^2\)也为完全积性函数,更一般地,\(id^k(n)=n^k\)也为积性函数。
符号:\(\epsilon\)
表达式:\(\epsilon(n)=(n==1)\)
性质:
\(f*\epsilon=f\)
符号:\(\varphi\)
表达式:\(\varphi(n)=n\prod_{i=1}^{m}\frac{p_i-1}{p_i}\)(\(p_i\)为n质因子)
性质:
积性
\(\varphi(n)=\varphi(n/p)\times p(p\in prime,p|n,p^2|n)\)
证明:
\(\varphi(n)=n\prod_{i=1}^{m}\frac{p_i-1}{p_i}=\frac{n}{p}\prod_{i=1}^{m}\frac{p_i-1}{p_i}*p=\varphi(n/p)\times p\)
用途:线性递推
证明:
由积积得积易知\(\varphi*I\)也为积性函数,故不妨记\(f=\varphi*I\),于是由唯一分解定理有\(f(n)=f(p_1^{c_1})f(p_2^{c_2})...f(p_m^{c_m})\),对于其中一项\(f(p_i^{c_i})=\varphi(1)+\varphi(p_i^1)+...+\varphi(p_i^{c_i})=1+p_i-1+p_i(p_i-1)\)
\(+...+p_i^{c_i-1}(p_i-1)=1+(p_i-1)(1+...+p_i^{c_i-1})=1+\)
\((p_i-1)\frac{p_i^{c_i}-1}{p_i-1}=1+p_i^{c_i-1}-1=p_i^{c_i}\),于是\(f(n)=p_1^{c_1}p_2^{c_2}...p_m^{c_m}=n\),所以得证。
用途:
1.隐含条件,式子证明
符号:\(d\)
表达式:\(d(n)=\sum_{d|n}1=\sum_{i=1}^{n}(d|n)=(c_1+1)(c_2+1)...(c_m+1)\)
性质:
\(d(n)=\frac{d(n/p)f(n)}{f(n/p)}\)(f(n)表示其最小质因子的个数+1,由定义感性理解易证)
\((d*I)(n)=\sum_{d|n}d(d)=\prod_{i=1}^{m}\frac{(c_i+2)(c_i+1)}{2}\)
证明:
由积积得积设\(f(n)=\sum_{d|n}d(d)=f(p_1^{c_1})...f(p_m^{c_m})\),对于其中一项\(f(p_i^{c_i})=1+2+3+...+c_m+1=\frac{(c_m+2),(c_m+1)}{2}\),合并易证。
证明:
对于单个约数来看,每个约数\(i\)各\([\frac{n}{i}]\)个。
证明:
\((I*I)(n)=\sum_{d|n}1\),不难得知,每个约数都被统计了一次。故得证。
证明:
考虑函数映射,对于\(ij\)中一个约数\(k\)而言,它由唯一分解定理有\(p^c\)这个质因子的次方,设\(i\)有\(p^a\),\(j\)有\(p^b\),有以下的映射方式:
以此对于\(ij\)的一个约数\(k\)我们能够生成唯一一对\(x,y\),而对于唯一一对\(x,y\)我们能唯一还原成一个\(k\),所以我们可以说它们是一一对应的,于是得证。
符号:\(\sigma\)
表达式:\(\sigma(n)=\sum_{d|n}d=\sum_{d=1}^n(d|n)d=\prod_{i=1}^m\sum_{j=0}^{c_i}p_i^{c_j}=\)
\((1+p_1+...+p_1^{c_1})(1+p_2+...+p_2^{c_2})...(1+p_m+...+p_m^{c_m})\)
性质:
\(\sigma(n)=\frac{\sigma(n/p)f(n)}{f(n/p)}=\prod_{i=0}^{c_1}p_i^{i}\),由定义感性理解易证)
\(\sum_{d|n}\sigma(d)=\prod_{i=1}^{m}\sum_{j=0}^{c_i}p_i^j(c_i-j+1)\)
证明:
由积积得积设\(f(n)=\sum_{d|n}\sigma(d)=\prod_{i=1}^mf(p_i^{c_i})\),对于其中一项\(f(p_i^{c_i})=1+1+p_i+1+p_i+p_i^2+...1+...+p_i^{c_i}=\)
\((c_i+1)+c_ip_i+...+p_i^{c_i}\),合并即得证。
证明:
\((I*id)(n)=\sum_{d|n}d\),此时不难得知每个约数的值都被累加了一次,故得证。
符号:\(\mu\)
表达式:
\(\mu(n)=0\)(有相同质因子)
\(\mu(n)=1\)(有偶数个不同质因子)
\(\mu(n)=-1\)(有奇数个不同质因子)
性质:
证明:
法一:数学归纳
由积积得积设\(f(n)=\sum_{d|n}\mu(d)=\prod_{i=1}^{m}f(p_i^{c_i})\),对于其中一项有\(f(p_i^{c_i})=\mu(1)+\mu(p_i)+\mu(p_i^2)+...+\mu(p_i^{c_i})=0\),特别地,当n=1,不能进行质因数分解,此时结果为1,所以得证。
假设\(\sum_{d|n}\mu(d)\)中该n以前所有数满足条件,考虑给n乘一个质数p,只是给原式多了一个取负的部分,而对于所有质数显然满足条件,特别的当n=1,不满足条件,等于1,故得证。
思路创造者:lsy
法二:容斥原理
不妨设n的质因数有c个,对于选取的d质因子次数为0,有\(C_c^0\),而次数为1,\(C_c^1\)...,则有
\[\sum_{d|n}\mu(d)=C_n^0-C_n^1+C_n^2-...+(-1)^nC_n^n\]
由上标公式易知该式只有当n=1时为1,其余情况为0,故得证。
证明:
法一(容斥):
不难得知
\[\sum_{d|n}\frac{\mu(d)n}{d}=1-\sum_{i=1}^m\frac{n}{p_i}+\sum_{1\leq i<j \leq m}\frac{n}{p_ip_j}-\sum_{1\leq i<j <k\leq m}\frac{n}{p_ip_jp_k}+\]
\[...+(-1)^m\frac{n}{\prod_{i=1}^mp_i}\]
由容斥原理不难得知\(\sum_{d|n}\frac{\mu(d)n}{d}=\varphi(n)\),即\(\sum_{d|n}\frac{\mu(d)}{d}=\frac{\varphi(n)}{n}\),故得证。
法二(狄利克雷卷积):
注意到\((\mu*id)(n)=\sum_{d|n}\mu(d)id(n/d)=\sum_{d|n}\frac{\mu(d)n}{d}\),且有
\[\varphi*I=id\]
\[\varphi*I*\mu=id*\mu\]
\[\varphi*\epsilon=id*\mu\]
\[\varphi=id*\mu\]
即
\[\sum_{d|n}\frac{\mu(d)n}{d}=\varphi(n)\]
所以
\[\sum_{d|n}\frac{\mu(d)}{d}=\frac{\varphi(n)}{n}\]
\[F(n)=\sum_{d|n}f(d)\Rightarrow f(n)=\sum_{d|n}\mu(d)F(n/d)=\]
\[\sum_{d|n}\mu(n/d)F(d)\]
证明:
把\(f(d)\)抽象成d这个约数的性质,\(F(n)\)即n的所有约数的性质之和,故要求\(f(n)\),我们先把\(F(n)\)减去\(F(d)\),d正好比n少一个质因子,而系数正好为\(\mu(n/d)\),但是这样减多了,于是加回\(F(d)\),此处d正好比n少两个不同质因子,系数也正好为\(\mu(n/d)\),...,于是得证。
\[\sum_{d|n}\mu(d)F(n/d)=\sum_{d|n}\mu(d)\sum_{i|\frac{n}{d}}f(i)=\sum_{i=1}^{n}f(i)\sum_{i|\frac{n}{d},d|n}\mu(d)\]
\[=\sum_{i=1}^{n}f(i)\sum_{d|\frac{n}{i}}\mu(d)=\sum_{i=1}^{n}f(i)(\frac{n}{i}==1)=f(n)\]
注意到\(F=f*I,\mu*i=\epsilon\),所以
\[F=f*I\]
\[F*\mu=f*I*\mu\]
\[F*\mu=f*\epsilon\]
\[F*\mu=f\]
即
\[f(n)=\sum_{d|n}\mu(d)F(n/d)\]
\[F(n)=\sum_{n|d}f(d)\Rightarrow f(n)=\sum_{n|d}\mu(d/n)F(d)=\]
\[\sum_{d|n}\mu(d)F(d/n)\]
证明:
\[\sum_{n|d}\mu(d/n)F(d)=\sum_{n|d}\mu(d/n)\sum_{d|i}f(i)=\]
\[\sum_{n|i}f(i)\sum_{n|d,d|i}\mu(d/n)=\sum_{n|i}f(i)\sum_{d|\frac{n}{i}}\mu(d)=\]
\[\sum_{n|i}f(i)(\frac{n}{i}==1)=f(n)\]
考虑已经证过约数型的式子,而狄利克雷卷积不适合倍数型的式子,考虑分数倒置,设\(F'(n)=F(\frac{1}{n}),f'(n)=f(\frac{1}{n}),F(n)=\sum_{d|n}f(d)\),故有:
\[F'(n)=F(\frac{1}{n})=\sum_{d|\frac{1}{n}}f(d)=\sum_{n|\frac{1}{d}}f(d)=\sum_{n|\frac{1}{d}}f'(\frac{1}{d})=\sum_{n|d}f'(d)\]
而
\[f(n)=\sum_{d|n}F(d)\mu(n/d)\]
\[f(\frac{1}{n})=\sum_{n|\frac{1}{d}}F(d)\mu(1/nd)\]
\[f(\frac{1}{n})=\sum_{n|d}F(\frac{1}{d})\mu(d/n)\]
\[f'(n)=\sum_{n|d}F'(d)\mu(d/n)\]
故得证
明确作用:线性筛的优化
设\(f,g,h\)均为积性函数并满足\(h=f*g\),\(f\)为所求,并设\(s(n)=\sum_{i=1}^nf(i)\),有
\[g(1)s(n)=\sum_{i=1}^nh(i)-\sum_{d=2}^ng(d)s(n/d)\]
证明:
\[\sum_{i=1}^nh(i)=\sum_{i=1}^n\sum_{d|i}f(i/d)g(d)=\sum_{d=1}^{n}\sum_{i=1}^n(d|i)f(i/d)g(d)=\]
\[\sum_{d=1}^{n}g(d)\sum_{i=1}^{[n/d]}f(i)=g(1)\sum_{i=1}^nf(i)+\sum_{d=2}^{n}g(d)\sum_{i=1}^{[n/d]}f(i)=\]
\[g(1)s(n)+\sum_{d=2}^{n}g(d)\sum_{i=1}s(n/d)\]
\[g(1)s(n)=\sum_{i=1}^nh(i)-\sum_{d=2}^ng(d)s(n/d)\]
故得证
解:
注意到\(\mu*I=\epsilon\),所以所需杜教筛式子为\(I(1)s(n)=\sum_{i=1}^n\epsilon(i)-\sum_{d=2}^nI(d)s(n/d)\),化简即\(s(n)=1-\sum_{d=2}^ns(n/d)\),故问题解决。
解:
注意到\(\varphi*I=id\),所以杜教筛式子为\(I(1)s(n)=\sum_{i=1}^nid(i)-\sum_{d=2}^nI(d)s(n/d)\),即\(s(n)=\frac{(1+n)n}{2}-\sum_{d=2}^ns(n/d)\),故问题得解。
解:
此题无直接性质,故考虑待定函数,设\(h=f*g,f(n)=n\varphi(n)\),有\(h(n)=\sum_{d|n}d\varphi(d)g(n/d)\),而要简化式子,自然想到\(\frac{n}{d}d=n\),于是猜\(g=id\),故\(h(n)=n\sum_{d|n}\varphi(n)=n^2\),所以所求杜教筛式子为\(id(1)s(n)=\sum_{i=1}^ng(i)-\sum_{d=2}^nid(d)s(n/d)\),化简即\(s(n)=\frac{n(n+1)(2n+1)}{6}-\sum_{d=2}^nd\times s(n/d)\),故问题解决。
三种角度:
\[num\]
\[\swarrow\ \ \ \ \ \ \ \ \ \ \ \ \ \ \nwarrow\]
\[divisor\ \ \rightarrow \ \ \ prime\ factor\]
两大思路:
Mobius反演\(\Longleftrightarrow\)容斥原理
等式变换:
对应相等\(\Longleftrightarrow\)约数拆分
(反证法,分数反证,因式分解)
(对于倍数型式子可采取分数倒置的方法)
适用范围:函数的证明
注意1不能质因数分解的情况
恭喜您,您已经达到了我的Mobius反演的水平,但是我的水平也不过沧海一粟,远远不够您的继续深造,但愿我微薄的一点总结,能让你走的更远
原文:https://www.cnblogs.com/a1b3c7d9/p/10781608.html