1. 程式人生 > >集訓DAYn——組合數學(1)

集訓DAYn——組合數學(1)

n-k 證明 blank 裏的 數學歸納 費馬小定理 假設 else n)

組合,吼吼吼

又到了我們信息老師講數學課了,吼吼吼

然後數學老師中途探望了一下,哇塞塞,然後他看到黑板上的題,微妙的笑了.


排列:從n個數中有序的選出m個數的方案數是多少?
第一個數有n種取法,第二個數有n-1種取法......第m個數有n-m+1種取法。

n*(n-1)*...*(n-m+1)=n!/(n-m)!記為A(n,m).

組合:從n個數中無序的選出m個數的方案數是多少?

先有序的取m個數,那麽無序的m個數會被取到m!次。

A(n,m)/m!=n!/[m!(n-m)!]記為C(n,m)

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

組合數的性質:1.C(m,n)=C(n-m,n)

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

       3.C(0,n)+C(1,n)+C(2,n)+...+C(n,n)=2^n

       4.C(n,n)+C(n,n+1)+C(n,n+2)+...+C(n,n+r)=C(n+1,n+r+1)

       5.C(0,n)+C(2,n)+C(4,n)+...=C(1,n)+C(3,n)+C(5,n)+...=2^(n-1)

something else

1.n個人圍著一張圓桌坐在一起,共有(n-1)! 種坐法。

2.從n個排成一排的數中取m個數,且數字之間互不相鄰,共有C(m,n-m+1)種取法。

二次項定理:

(a+b)^n=∑(0<=k<=n)C(k,n)*(a^k)*(b^(n-k))

友情證明:可愛的數學歸納法

      當n=1時,(a+b)^1=C(0,n)*(a^0)*(b^1)+C(1,n)*(a^1)*(b^0)=a+b成立

      假設當n=m時命題成立,當n=m+1時:

      (a+b)^(m+1)=(a+b)(a+b)^m

      =(a+b)∑(0<=k<=n)C(k,m)*(a^k)*(b^(m-k))

      =...=∑(0<=k<=m+1)C(k,m+1)*(a^k)*(b^(m+1-k))

那麽,二次項定理有什麽用呢?

我可以負責任的告訴你,這個數學裏是經常考的,2017年的浙江高中數學省賽卷第一題就是這個東西,它可以被用於證明可愛的費馬小定理...我知道你心裏已經開始喊停了...

但數學和信息是分不開的,數學班的同學告訴我們數學老師在數學班裏講樹還有剪枝,數學奧林匹克命題人講座(簡稱命題人)的《組合問題》的編寫者之一就是畢業於計算機系的...

所以還是對數學好點吧。

講正事,想知道浙江省省賽卷第一題是怎麽出的嗎?(不想知道,我還是會講)

二次項定理的直接運用,不要你計算,我們把他變成信息題,如下:

給定一個多項式(ax+by)^k,求出多項式展開後的x^n*y^m項的系數,對10007取模。

0<=n,m<=k<=1000,n+m=k,0<=a,b<=1000000。

根據二次項定理,有(ax+by)^k=∑(0<=i<=k)C(i,k)*(a^i)*(b^(k-i))*(x^i)*(y^(k-i))

         所以(x^n)*(y^m)的系數即為C(n,k)*(a^n)*(b^m),直接計算就好。

數學題是不是很簡單,只不過算的很煩,然而信息就不存在這種問題了,所以我愛信息,呦吼吼!

隔板法

隔板法又稱插空法,就是在n個元素間插入(m-1)個板,即把n個元素分成m組的方法。

eg:

例1將20個大小形狀完全相同的小球放入3個不同的盒子,允許有盒子為空,但球必須放完,有多少種不同的方法? 分析:本題中的小球大小形狀完全相同,故這些小球沒有區別,問題等價於將小球分成三組,允許有若幹組無元素,用隔板法. 解析:將20個小球分成三組需要兩塊隔板,因為允許有盒子為空,不符合隔板法的原理,那就人為的再加上3個小球,保證每個盒子都至少分到一個小球,那就符合隔板法的要求了(分完後,再在每組中各去掉一個小球,即滿足了題設的要求)。然後就變成待分小球總數為23個,球中間有22個空檔,需要在這22個空檔裏加入2個隔板來分隔為3份,共有C(22,2)=231種不同的方法. 點評:對n件相同物品(或名額)分給m個人(或位置),允許若幹個人(或位置)為空的問題,可以看成將這n件物品分成m組,允許若幹組為空的問題.將n件物品分成m組,需要m-1塊隔板,將這n件物品和m-1塊隔板排成一排,占n+m-1位置,從這n+m-1個位置中選m-1個位置放隔板,因隔板無差別,故隔板之間無序,是組合問題,故隔板有Cn+m-1 m-1種不同的方法,再將物品放入其余位置,因物品相同無差別,故物品之間無順序,是組合問題,只有1種放法,根據分步計數原理,共有Cn+m-1 m-1×1=Cn+m-1 m-1種排法. 那麽就引出了一個大大的栗子-o.o-:球和袋子的問題

n個球和m個袋子,已經有大佬總結得可好了,棒棒_qwq_(顏文字中毒期)

這裏呢我們再小小的分析一下球和袋子的問題

1.將n個不同的球放到m個相同的袋子裏有多少種方案(沒有空袋子哦)?

用f[i][j]表示將i個不同的球放到j個相同的袋子,並保證每個袋子裏都有球的方案數。

我們考慮第i個球是不是單獨放的,f[i][j]=f[i-1][j-1]+f[i-1][j]*j

答案是f[n][0]+f[n][1]+...f[n][m].時間復雜度是O(nm)

以上為ppt原話,反正我是沒怎麽懂那個式子是怎麽出來的,各位大佬可能懂了吧,我太菜了啊~~~

那麽,不懂的和我一樣的蒟蒻們看看一看一下思路吧:(來自一位蒟蒻的分享)

f[i][j]表示將i個不同的球放到j個相同的袋子中,

假設前面的i-1個球都放好了,放在了j個袋子裏,其方案數為f[i-1][j],此時還有一個球要和哪一坨球同居呢?有j個袋子,有j種選擇,所以為f[i-1][j]*j(乘法原理,不要告訴我你不會,這真的是小學數學) 。

假設前i-1個球放在了j-1個袋子裏,那麽第i個球一定在剩余的空袋子裏(保證每個袋子裏都有球)已有的方案數為f[i-1][j-1].

加一加,就得到了大佬ppt上的式子:f[i][j]=f[i-1][j-1]+f[i-1][j]*j

2.將n個相同的球放在m個相同的袋子裏有多少種方案?

由於袋子是相同的,我們通過保證球數是單調不減的來防止重復統計。用f[i][j]表示將i個相同的球放到j個相同的袋子裏的方案數。

考慮第一個袋子是否放球,如果放的話,由於球數單調不減,我們必須在每個袋子裏都放一個球。

如果不放的話,那我們直接考慮後面的袋子。

f[i][j]=f[i-j][j]+f[i][j-1].時間復雜度O(nm)

    

            

集訓DAYn——組合數學(1)