首页 > 代码库 > [学习?]组合和排序

[学习?]组合和排序

组合和排序

(假如有同学不小心进来了,那也没事,博是给我自己写的,但你们千万不要笑我,认真!)

 

组合和排序是OI学生们的基本功,其重要性不言而喻。(而我认为它的最大作用就是解决生物的遗传问题!)

这注定是一个废掉的下午,顶着同学们都在打假期题的危机,我开始一个人神游。

、( -  A   - )、

 

基本定义:

c‘check here 百科

c‘check here 文库

感受着互联网带我们的便捷,于是我就转了百度百科。

 

组合数(combinatorial number):

从m个不同元素中,任取n(n≤m)个元素并成一组,叫做从m个不同元素中取出n个元素的一个组合;从m个不同元素中取出n(n≤m)个元素的所有组合的个数,叫做从m个不同元素中取出n个元素的组合数。

 

套路上说,鉴于人们对用数学描摹一切未知事物的热情,于是一个可爱的公式出现了。

 

组合数计算公式:

最基本的有:

技术分享

特别的有,c(n,0)=1(这个其实也和后面的拓展有关系)

接着是拓展:

 

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

 

怎么理解这个公式?(因为我给不了证明啊)

首先:

 

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

 

这个公式好说,既然我们确定确定一种组合的组合数(c(n,m)),另一种组合数也就固定了。(补集思想!)

 

但:

 

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

 

显然,这是一个递推式,但这个就有点麻烦了。

 

于是机智的我翻到了一种理解方式:

现在我们有n+1个球,我们从里面选m个。 这个我们知道共有C(m,n+1)种选法。

然后我们在这n+1个球里随便挑一个,叫它a球。

那么在这C(m,n+1)种选法里就分成了两类,且只有这两类。

一类是选出来的m个球里没有a球。 这类选法数量等价于n个球里选m个,就是C(m,n) 还有一类是选出来的m个球里有a球。

 这类选法数量等价于n个球里选m-1个,就是C(m-1,n)

这下是不是好记多了?

 

排序数(Arrangement number):

 

从n个不同元素中任取r(r≦n)个元素排成一列(考虑元素先后出现次序)称此为一个排列,此种排列的总数即为排列数,即叫做从n个不同元素中取出r个元素的排列数。

 

又是套路。

 

排序数计算公式:

技术分享

排序貌似没什么好说的?

 

 

排序数和组合数的关系:

技术分享

 

还记得上面的那个两个基本公式么,看看这张图,是不是明白排序数的公式是怎么来的了?(其实就是在原来的组合数公式上*A(n,n),也就是*n!)

 

还有一些话:

 

这次noip有个interesting的题:组合数问题,但和这个组合数公式并无太大关系。

 

真的要算组合数,那就直接拿原式即可。

如果你还想取模,那就找 this 。

动态规划,杨辉三角...怎么想好像都不妥。

 

二项式定理:

真的不会!

 

 

2017.6.6_16:42:16  :   大部分内容待补,今天先跑(还有生物题!)。

 

[学习?]组合和排序