【SinGuLaRiTy-1005】 Copyright (c) SinGuLaRiTy 2017. All Rights Reserved .

加法原理

设事件A有m种产生方式,事件B有n种产生方式,则事件A或B之一有m+n种产生方式。
集合论语言:若 |A| = m , |B| = n , A∩B =  Φ, 则 |AUB| = m + n 。

<例>

(1)某班选修企业管理的有 18 人,不选的有 10 人,则该班共有 18 + 10 = 28 人。

(2)北京每天直达上海的客车有 5 次,客机有 3 次, 则每天由北京直达上海的旅行方式有 5 + 3 = 8 种。

乘法原理

设事件A有m种产生式,事件B有n种产生方式,则事件A与B有 m · n种产生方式。
集合论语言:若 |A| = m , |B| = n , A*B = {(a,b) | a∈A,b ∈ B}, 则 |A * B| = m * n 。

<例>

(1) 某种字符串由两个字符组成,第一个字符可选自{a,b,c,d,e},第二个字符可选自{1,2,3},则这种字符串共有5 * 3 = 15 个。

(2) 从A到B有三条道路,从B到C有两条道路,则从A经B到C有3 * 2=6 条道路。

(3*)a.求小于10000的含1的正整数的个数

分析:

小于10000的不含1的正整数可看做4位数,但0000除外.
故有9×9×9×9-1=6560个.
含1的有:9999-6560=3439个

b.求小于10000的含0的正整数的个数

分析:

不含0的1位数有9个,2位数有9*9  个,3位数有9^3  个,4位数有9^4 个 
不含0小于10000的正整数有9+9^2+9^3+9^4 =7380个
含0小于10000的正整数有9999-7380=2619个

排列与组合

定义:从n个不同的元素中,取r个不重复的元素,按次序排列,称为从n个中取r个的无重排列。当r=n时称为全排列。一般不说可重即无重。可重排列的相应记号为  P(n,r) 。

排列:从n个中取r个的排列的典型例子是从n个不同的球中,取出r个,放入r个不同的盒子里,每盒1个。第1个盒子有n种选择,第2个有n-1种选择,······,第r个有n-r+1种选择。故有P(n,r)=n(n-1)······(n-r+1)。

组合:从n个中取r个的组合的典型例子是从n个不同的球中,取出r个,放入r个相同的盒子里。每个盒子要放一个球。每一种组合方案都可以衍生出r!种排列方案来。C(n,r)=p(n,r)/r! 。

<组合公式的性质>

性质1:C(n,0)=C(n,n)
性质2:C(n,k)=C(n,n-k)
性质3:C(n,k)+C(n,k+1)=C(n+1,k+1)

二项式定理:

<例>

1.有重复元素的全排列

有k种元素,其中第i种元素有ni个,所有元素一共是n个。求全排列的个数.
解:设元素的总数为n。它同一类元素被重复计算了ni!次.所以答案为:n!/(n1!*n2!*…nk!)

2.可重复选择的组合

有n个不同的元素,每个元素可以选多次,一共选择k个元素,有多少种方法?

如n=3,k=2,有6种选择:(1,1),(1,2),(1,3),(2,2),(2,3),(3,3)

分析:设第一个元素选择x1个,第二个元素选择x2个,……,第n个元素选择xn个。则有方程:x1+x2+……xn=k。问题转换为求方程的非负整数解的个数。令yi=xi+1,则答案为y1+y2+…+yn=k+n的正整数解的个数。想想k+n个相同的小球拍成1列,现在要把它分成n个部分,则只需在其中放置n-1块隔板即可。一共有k+n-1个位置用来放隔板,所以答案为C(n+k-1,n-1)

集合拆分

<整数的无序拆分>

将一个整数n拆成无序的k个数的和,问有多少种方法?

将n个相同的球全部放入k个相同的盒子,问有多少种方法?
        p(n,k)=p(n-1,k-1)+p(n-k,k)

<集合的无序分拆(第二类stirling)>

将一个包含n个元素的集合拆成k个子集,每个子集非空,且子集之间无交集,问有多少种方法?

设S(n,k)表示解,则S(n,k)=S(n-1,k-1)+S(n-1,k)*k,其中S(n,n)=1,S(n,1)=1,若i<j,则S(i,j)=0.

将n个不同的小球全部放入k个相同的盒子,要求每个盒子都不为空。

<集合的有序分拆>

将一个包含n个元素的集合拆成有序的k个子集,每个子集非空,且子集之间无交集,问有多少种方法?

将n个不同的小球全部放入k个不同的盒子,要求每个盒子都不为空。
设S(n,k)表示集合n的无序分拆,则本题的答案为:
              k!*S(n,k)
其中S(n,n)=1,S(n,1)=1,若i<j,则S(i,j)=0

<整数的有序拆分>

将一个整数n拆成有序的k个数的和,问有多少种方法?

将n个相同的球全部放入k个不同的盒子,问有多少种方法?

C(n-1,k-1)

<*经典分配问题12态>

第一类Stirling数

将n个不同的数分成k个非空循环排列一共有多少种方法。

S1(n,k)=S1(n-1,k-1)+(n-1)*S1(n-1,k)
递推关系的说明:
考虑第n个数,n可以单独构成一个非空循环排列,这样前n-1种数构成k-1个非空循环排列,方法数为s1(n-1,k-1);
也可以前n-1种数构成k个非空循环排列,而第n个数插入第i个数的左边,这有(n-1)*s1(n-1,k)种方法。

鸽笼原理

又名抽屉原理。有n个鸽笼,现在放入m只鸽子(m>n)则必有两只鸽子在一个笼子。

容斥原理

如果被计数的事物有A、B、C三类,那么,A类和B类和C类元素个数总和= A类元素个数+ B类元素个数+C类元素个数—既是A类又是B类的元素个数—既是A类又是C类的元素个数—既是B类又是C类的元素个数+既是A类又是B类而且是C类的元素个数。

(A∪B∪C = A+B+C - A∩B - B∩C - C∩A + A∩B∩C)

<公式>

Time : 2017-02-08

[SinGuLaRiTy] 组合数学的更多相关文章

  1. [SinGuLaRiTy] 组合数学题目复习

    [SinGuLaRiTy] Copyright (c) SinGuLaRiTy 2017.  All Rights Reserved. [CQBZOJ 2011] 计算系数 题目描述 给定一个多项式( ...

  2. [SinGuLaRiTy] 2017 百度之星程序设计大赛 初赛B

    [SinGuLaRiTy-1037] Copyright (c) SinGuLaRiTy 2017. All Rights Reserved. Chess Time Limit: 2000/1000 ...

  3. [SinGuLaRiTy] NOIP膜你赛-Day 1

    [SinGuLRiTy-1022] Copyright (c) SinGuLaRITy 2017. All Rights Reserved.  对于所有题目:Time Limit:1s || Memo ...

  4. poj 3734 Blocks 快速幂+费马小定理+组合数学

    题目链接 题意:有一排砖,可以染红蓝绿黄四种不同的颜色,要求红和绿两种颜色砖的个数都是偶数,问一共有多少种方案,结果对10007取余. 题解:刚看这道题第一感觉是组合数学,正向推了一会还没等推出来队友 ...

  5. 组合数学or not ---- n选k有重

    模板问题: 1. 取物品 (comb.pas/c/cpp) [问题描述] 现在有n个物品(有可能相同),请您编程计算从中取k个有多少种不同的取法.[输入] 输入文件有两行,第一行包含两个整数n,k(2 ...

  6. 组合数学(全排列)+DFS CSU 1563 Lexicography

    题目传送门 /* 题意:求第K个全排列 组合数学:首先,使用next_permutation 函数会超时,思路应该转变, 摘抄网上的解法如下: 假设第一位是a,不论a是什么数,axxxxxxxx一共有 ...

  7. uestc1888 Birthday Party    组合数学,乘法原理

    题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=25539#problem/G 题目意思: 有n个人,每个人有一个礼物,每个人能拿 ...

  8. The Brain vs Deep Learning Part I: Computational Complexity — Or Why the Singularity Is Nowhere Near

    The Brain vs Deep Learning Part I: Computational Complexity — Or Why the Singularity Is Nowhere Near ...

  9. UVA 11076 Add Again 计算对答案的贡献+组合数学

    A pair of numbers has a unique LCM but a single number can be the LCM of more than one possiblepairs ...

随机推荐

  1. C#委托简介

    C#中委托是一种引用类型,该引用类型与其他引用类型不同,在委托对象的引用中存放的不是对数据的引用而是存放对方法的引用,即委托的内部包含一个指向某个方法的指针.通过使用委托把方法的引用封装在委托对象中, ...

  2. 基于DDD的.NET开发框架ABP实例,多租户 (Sass)应用程序,采用.NET MVC, Angularjs, EntityFramework-介绍

    介绍 基于ABPZERO的多租户 (Sass)应用程序,采用ASP.NET MVC, Angularjs-介绍 ASP.NET Boilerplate作为应用程序框架. ASP.NET MVC和ASP ...

  3. .CN根域名被攻击至瘫痪,谁之过?

    2013-10-08 09:19 佚名 新浪科技 2013年8月25日凌晨,.CN域名凌晨出现大范围解析故障,经分析.CN的根域授权DNS全线故障,导致大面积.CN域名无法解析.事故造成大量以.cn和 ...

  4. [原创.数据可视化系列之十三]idw反距离权重插值算法的javascript代码实现

    图形渲染中,idw反距离权重插值算法是一个应用非常广泛的方法,但是js实现的比较少,目前实现一个: //idw算法 //输入[[x:0,y:0,v:0],[x:0,y:0,v:0],[x:0,y:0, ...

  5. 存储可靠性技术之 --RAID

    云计算项目交付时,不可避免的需要考虑存储磁盘采用何种RAID.例如:我们的项目工程师可能会建议大家连接克隆虚拟机系统盘组RAID 10,完整复制虚拟机数据盘 使用RAID5或者RAID6等,那么RAI ...

  6. 每天一个Linux命令(16)--which命令

    把昨天的,留给昨天:今日,你将重新开始. 好的,在第一个阶段我们学习了  文件目录的操作命令: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ls cd pwd mkdir ...

  7. Django之Session

    Django  -- Seeion介绍 问:       Django的session是什么? 答:       Django 完全支持匿名 Session的. Session 框架允许每一个用户保存 ...

  8. python服务器环境搭建(1)——本地服务器准备

    去年十月底到新公司上班,由于公司旧系统存在各种问题同时不便于扩展,而公司领导对17年寄予很大的期望,用户量.收入要上一个新台阶,我经过全面评估后,决定全部用python重构过,开发一个基于微服务架构的 ...

  9. ACM 树形数组

    树状数组(Binary Indexed Tree(BIT), Fenwick Tree)是一个查询和修改复杂度都为log(n)的数据结构.主要用于查询任意两位之间的所有元素之和,但是每次只能修改一个元 ...

  10. java-信息安全(二)-对称加密算法DES,3DES,AES,Blowfish,RC2,RC4

    概述 信息安全基本概念: DES(Data Encryption Standard,数据加密标准) 3DES(Triple DES,三重数据加密算法(TDEA,Triple Data Encrypti ...