莫反
void get_mu(int n)
{
mu[1]=1;
for(int i=2;i<=n;i++)
{
if(!vis[i]){prim[++cnt]=i;mu[i]=-1;}
for(int j=1;j<=cnt&&prim[j]*i<=n;j++)
{
vis[prim[j]*i]=1;
if(i%prim[j]==0)break;
else mu[i*prim[j]]=-mu[i];
}
}
}
蒯的线性筛 \(mu\) 函数。
有:
\[f(i)=\sum\limits_{i|d} g(d)
\]
则:
\[g(i)=\sum\limits_{i|d}\mu(\frac{d}{i})\times f(d)
\]
可重集组合
有 \(k\) 种物品,每个物品有无限个,问选出 \(n\) 个物品的方案数有多少种。
直接考虑隔板法,即将 \(n\) 分成可以为 \(0\) 的 \(k\) 段即可,等价于将 \(n + k\) 分成非 \(0\) 的 \(k\) 段。 只需要在 \(n + k ? 1\) 个空隙中插入 \(k ? 1\) 个板子即可。
所以方案数是:
\[\binom{n+k-1}{k-1}=\binom{n+k-1}{n}
\]
圆排列
\(n\) 个物体要选出 \(m\) 个摆成一个环,问有多少种方案。
\[Ans=\frac{A^m_n}{m}=\binom{n}{m}(m-1)!
\]
二项式定理
\[(a+b)^n=\sum\limits_{i=0}^n \binom{n}{i}a^ib^{n-i}
\]
容斥原理
很广,这个用的多些。
\[f(i)=\sum\limits_{i=0}^n \binom{n}{i} g(i)
\]
\[g(n)=\sum\limits_{i=0}^n(-1)^{n-i}\binom{n}{i}f(i)
\]
卡特兰数
\(n\) 边型的三角切割方案数,也等于 \(n\) 个元素的出栈序列,还有 左右括号的合法序列 也是卡特兰数。
前几项是 \(1, 2, 5, 14, 42, 132\)。
通项:
\[C_n=\binom{2n}{n}-\binom{2n}{n-1}
\]
第一类斯特林数
$ {n\brack m}$ 表示 \(n\) 个元素分成 \(m\) 个环的方案数。
递推式:
\[{n\brack m}={n-1\brack m-1}+(n-1)*{n-1\brack m}
\]
运用:
\[n!=\sum\limits_{i=0}^n {n\brack i}
\]
\[x^{\underline{n}}=\sum\limits_{i=0}^n {n\brack i}(-1)^{n-i}x^i
\]
\[x^{\overline{n}}=\sum\limits_{i=0}^n {n\brack i}x^i
\]
第二类斯特林数
\({ n\brace m }\) 表示将 \(n\) 个元素放入 \(m\) 个相同盒子里,每个盒子非空的方案数。
递推式:
\[{n\brace m}={n-1\brace m-1}+m*{n-1\brace m}
\]
运用:
\[m^n=\sum\limits_{i=0}^n{n\brace i}\binom{m}{i}i!=\sum\limits_{i=0}^n{n\brace i}\frac{m!}{(m-i)!}=\sum\limits_{i=0}^n{n\brace i}m^{\underline{i}}
\]