数学相关

莫反

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}} \]

数学相关

上一篇:php-fpm参数调优


下一篇:webpack+react