zoukankan      html  css  js  c++  java
  • 组合数学

    最基础的:
    (C^{m}_{n}=frac{n!}{m!(n-m)!})
    他的逆元算法是:
    因为阶乘是(fac[i]=fac[i-1]*i)
    所以阶乘逆元是(invfac[n]=fac[n]^{p-2})
    =>(invfac[i-1]=invfac[i]*i)

    于是(color{#00CCFF}{C^{m}_{n}=fac[n]*invfac[n-m]%p*invfac[m]%p})

    若将(C^{m}_{n})分行我们就得到了伟大的杨辉Triangle!
    triangle

    卢卡斯((color{white}{Greencas}))定理

    (C^{m}_{n}=C^{ndiv p}_{mdiv p}*C^{n%p}_{m%p}),p仍然还是质数

    ll C(ll n,ll m)
    {
        if(n<m)return 0;
        return (fac[n]*inv(fac[m]))%p*inv(fac[n-m])%p;
    }
    ll lucas(ll n,ll m)
    {
        if(!m)return 1;
        return lucas( c(n/p,m/p),c(n%p,m%p) );
    }
    

    容斥定理

    (Ans=所有方案-不满足其中1个+不满足其中2个......+(-1)^n*不满足其中n个)
    例子:
    错排问题:n把钥匙开n把锁,随机分配,全都打不开概率多少
    胡乱分析:
    我们有:1不在1,2不在2......n不在n
    于是
    (huge{Sigma^{n}_{k=0} (-1)^k*Cn^k*A^{n-k}_{n-k}})
    -----------------------------------------------------------------------------------------------------------------------

    (huge{Catalan数})

    可解:
    进栈顺序、对角线划分方案数、二叉树形态
    Catalan的推导方式为:
    (h(n)=h(0)*h(n-1)+h(1)+h(n-2)......+h(n-1)*h(0))
    其中(h(0)=1,h(1)=1)
    又有另一种写法:
    (h(n)=C^{n}_{2n} div (n+1))
    前七项为:
    (huge{color {red}{1,1,2,5,14,42,132}})

    矩阵

    矩阵乘法:
    A为mn的矩阵,B为np矩阵,他们乘积C为m*p矩阵
    (c_{i,j}=a_{i,1}b_{1,j}+a_{i,2}b_{2,j}+······+a_{i,n}b{n,j}=Sigma ^{n}_{r=1} a_i,b_{r,j})

    struct martix{
        ll a[4][4],n,m;
    }
    martix multiply(martix a,martix b)
    {
        martix ret;
        ret.n=a.n,ret.m=b.m;
        for(int i=1;i<=a.n;i++)
        {
            for(int j=1;j<=b.m;j++)
            {
                ret.a[i][j]=0;
                for(int k=1;k<=a.m;k++)
                {
                    ret.a[i][j]+=a.a[i][k]*b.a[k][j];
                    ret.a[i][j]%=mod;
                }
            }
        }
        return ret;
    }
    
  • 相关阅读:
    关于global和$GLOBALS[]的一些实践
    java环境配置的新手教程
    echart图表 resize()方法使用
    使用git上传下载项目
    windows 系统新建 vue 项目的坑
    Java版求1000以内的完全数
    Java版经典兔子繁殖迭代问题——斐波那契(Fibonacci)数列
    Java版冒泡排序和选择排序
    AngularJS 动画总结
    Mac下sublime text 的“package control”安装
  • 原文地址:https://www.cnblogs.com/ComputerEngine/p/11146306.html
Copyright © 2011-2022 走看看