zoukankan      html  css  js  c++  java
  • 浴谷夏令营2017.8.1基础数学知识的整理

    1.排列与组合

    1.1 排列

    1.2 组合

    C(n,m)=C(n-1,m)+C(n-1,m-1)

    1.3 二项式定理

    (a+b)^n=ΣC(n,i)a^i*b^n-i

    例1.1组合数

    题目来源:洛谷3414

    快速幂

    1.4四种放球方法

    1)n个不同球放入m个不同袋子 m^n

    2)n个相同球放入m个不同袋子 隔板法 C(n+m-1,m-1)

    3)n个相同球放入m个相同袋子 用球数目递增判重 f[i][j]=f[i-j][j]+f[i][j-1]

    4)n个不同球放入m个相同袋子 f[i][j]=f[i-1][j-1]+f[i-1][j]*j

    其中(1)(2)袋子不同,可以直接用计数方法解决

    (3)(4)袋子是相同的,可以互相交换,只能用dp解决

    2.计数原理

    2.1 抽屉原理

    2.2 加法原理

    2.3 乘法原理

    2.4 容斥原理

    记f(S)表示满足集合S中至少一个条件的方案数,g(S)表示满足集合S中所有条件的方案数,h(S)表示不满足集合S中所有条件的方案数。

    f(S)=Σ(-1)|T|-1g(T),其中T为S的非空子集。

    通俗地说就是先把满足一个条件的都加上,这时候满足两个条件的被加了两次,所以要减掉一次,然后满足三个条件的被减成0次了,要加上一次…... 还有另一种形式。 

    求并集可以转化为求交集

    并则求交

    g(S)=Σ(-1)|T|h(T),其中T为S的子集。

    通俗地说就是先加上所有方案,然后扣掉不满足一个条件的方案,这时候不满足两个条件的被扣了两次,所以要加上一次,然后不满足三个条件的被加回1次了,所以要扣掉一次……

    求交集可以转化为求补集

    交则求补

    例4.1

    对一个n*m的棋盘染色,每格可以是黑色或白色。

    要求每行每列都有黑格。

    求方案数对10^9+7取模的结果。 n,m<=10^3。

    需要满足的条件是第1行、第2行…第n行、第1列、第2列…第m列都有黑格。

    用容斥原理转化为枚举其中一些条件不满足,也就是有一些行一些列全是白格。

    枚举行数i和列数j,那么选出i行j列的方案数是C(n,i)C(m,j),这i行j列全是白格的方案数是2^(n-i)(m-j)。

    所以答案就是Σ(-1)^(i+j)*C(n,i)C(m,j)2^(n-i)(m-j)。 时间复杂度O(nm)

    例4.2

    对一个n*m的棋盘染色,每格可以是黑色或白色。

    要求存在一行或一列都是黑格。

    求方案数对10^9+7取模的结果。 n,m<=10^3。

    需要满足的条件是第1行、第2行…第n行、第1列、第2列…第m列其中之一都是黑格。

    用容斥原理转化为枚举其中一些(至少一个)条件都满足,也就是有一些行一些列全是黑格。

    枚举行数i和列数j,那么选出i行j列的方案数是C(n,i)C(m,j),这i行j列全是白格的方案数是2(n-i)(m-j)。

    所以答案就是Σ(-1)i+j-1C(n,i)C(m,j)2(n-i)(m-j)。 时间复杂度O(nm)

    上面两个问题其实是互补的。

    容斥出来的式子也是互补的。

    其实那两个容斥的式子就是互补的。

    例4.3

    对一个n*m的棋盘染色,每格可以是黑色或白色。

    要求存在一行和一列都是黑格。

    求方案数对10^9+7取模的结果。 n,m<=10^3。

    需要满足的条件是:

    (A)第1行、第2行…第n行其中之一都是黑格。

    (B)第1列、第2列…第m列其中之一都是黑格。

    先对A用容斥原理,答案变为Σ(-1)i-1C(n,i)*有i行都是黑格且满足B的方案数。

    再对B用容斥原理,答案变为Σ(-1)i-1C(n,i)*Σ(-1)j-1C(m,j)*有i行j列都是黑格的方案数。

    化简一下就是Σ(-1)i+jC(n,i)C(m,j)2(n-i)(m-j),其中i,j>=1。 时间复杂度O(nm)

    3.概率与期望

    3.1 概率的一些性质

    如果事件A和事件B是互斥的,那么P(A∪B)=P(A)+P(B)。

    如果事件A和事件B是相互独立的, 那么P(A∩B)=P(A)*P(B),P(A|B)=P(A)。

    全概率公式:P(A)=ΣP(A|B=bi)*P(B=bi)。

    贝叶斯公式:P(A|B)=P(B|A)P(A)/P(B)

    3.2 期望的一些性质

    如果事件A和事件B是相互独立的, 那么E(AB)=E(A)*E(B)。

    全期望公式:E(A)=ΣE(A|B=bi)*P(B=bi)。

    期望的线性性:E(A+B)=E(A)+E(B)。

    例3.1 百事世界杯之旅

    每次从[1,n]中随机一个整数,问期望随机多少次可以把1~n都随机到。 1<=n<=10^6。

    如果已经随机出了k个数,那么期望多少次可以随机出一个新的数呢?

    随机出新的数的概率是(n-k)/n。 记x=(n-k)/n,那么期望就是1+(1-x)+(1-x)^2+……=1/(1-(1-x))=n/(n-k)。

    那么答案就是n/1+n/2+…+n/n。 时间复杂度O(n)

    例3.2 巧克力

    有k种颜色的巧克力。每次拿出一个随机颜色的巧克力放到桌上,如果桌上有2个巧克力颜色一样就把它们一起吃掉。

    问拿出n个巧克力后桌上恰好有m个巧克力的概率。 1<=n,m<=10^8,1<=k<=100。

    用f[i][j]表示i轮之后桌上有j个巧克力的概率。

    f[i][j]=f[i-1][j-1]*(k-(j-1))/k+f[i-1][j+1]*(j+1)/k。

    打表发现i的奇偶性确定时f[i][j]是收敛的。 i只要枚举到1000就好了。 时间复杂度O(1000*k)

    例3.3 骰子

    小A有一个骰子,这个骰子有n面,扔出i的概率是pi。

    他扔一次骰子,如果扔到i,那么他有qi的概率吃一颗巧克力。

    现在你看到他吃了一棵巧克力,问他扔出每个数字的概率。 1<=n<=100。

    贝叶斯公式:P(A|B)=P(B|A)P(A)/P(B)

    4.复杂度分析

    5.一些

    5.1 越狱

    正难则反

    5.2 妖梦拼木棒

    题目来源:洛谷3799

    巧妙枚举

    5.3 牛的IDCow IDs

    题目来源:洛谷3048

    用组合数巧妙处理

    5.4 错位排列

    递推或容斥

    5.5 硬币购物

    题目来源:洛谷1450

    预处理+容斥

    5.6 RedIsGood

    期望dp

  • 相关阅读:
    设计模式-状态模式
    Nginx相关
    Docker基础使用
    JavaScript定时器及回调用法
    前端交互篇
    基于ConcurrentHashMap的本地缓存
    J.U.C体系进阶(五):juc-collections 集合框架
    J.U.C体系进阶(四):juc-sync 同步器框架
    J.U.C体系进阶(三)- juc-atomic 原子类框架
    .net core https 双向验证
  • 原文地址:https://www.cnblogs.com/w-h-h/p/7728292.html
Copyright © 2011-2022 走看看