無視標題,從我作起html
update in 2018.10.1:spa
補充了"至多爲1的四中狀況".net
這玩意兒的官方名字應該是叫"Twelvefold way",共用12種狀況。htm
該狀況爲經典的第二類斯特靈數blog
設\(f[n][m]\)表示答案。排序
\(f[n][m] = f[n - 1][m - 1] + m \times f[n - 1][m]\)get
邊界條件:\(f[0][0] = 1\)table
答案 = 第\(n\)個數單獨佔一個盒子 + 第\(n\)個數和以前的數共佔一個盒子,同時考慮不一樣位置的貢獻class
注意最後要乘\(m\),由於第\(n\)個數放置的位置對答案是有影響的date
例如{1}{2 4}{3}與{1}{2}{3 4}是不一樣的方案
直接枚舉用了多少個盒子
設\(g[n][m]\)表示答案
則\(g[n][m] = \sum_{i = 0}^m g[n][i]\)
此類"至多放\(1\)"的問題若\(n>m\)則方案數必定爲\(0\)
答案爲\([n <= m]\)
每個球都有\(m\)种放法,故答案爲\(m^n\)
設\(g[n][m]\)表示答案,\(s[n][m]\)爲第二類斯特靈數
則\(g[n][m] = s[n][m] \times m!\)
至關因而考慮\(m\)個盒子的順序
\(ans = m!(m-1)! \dots (m - n + 1) ! = \frac{m!}{(m-n)!}\)
插板法的經典例題
\(n\)個球之間造成\(n - 1\)個空位,把\(m\)個盒子塞到裏面
方案爲\(C_{n - 1}^{m - 1}\)
注意這裏不能直接套用「插板法」獲得\(C_{n+1}^{m - 1}\)
由於使用插板法的前提條件之一就是「分紅的方案不能爲空」
考慮先在每一個盒子中放一個小球,那麼剩下的小球再往裏放的時候就能夠無視「非空的條件了」
故方案爲\(C_{n+m-1}^{m - 1}\)
這裏再補充一下爲何不能直接套用插板法
好比\(n = 2, m = 3\)時,方案爲\(6\),而直接套用插板法獲得的答案爲\(3\)。
究其緣由,是由於沒有考慮到兩個板同時佔了一個空位的狀況。
考慮每一個球放在了哪裏。
\(ans = C_m^n\)
這種狀況下,不一樣方案之間與具體用了哪一個球以及放到了哪一個盒子裏都沒有必然的聯繫
區分不一樣方案的方法是:把每一個盒子的球的個數從小到大排序,比較最終的狀況是否相同
例如:\(1 \ 7 \ 1\)與\(1 \ 1 \ 7 \\)實際是一種方案
對於\(n = 8, m = 3\)而言一共有\(10\)種不一樣的放法
0 | 0 | 8 |
---|---|---|
0 | 1 | 7 |
0 | 2 | 6 |
0 | 3 | 5 |
1 | 1 | 6 |
1 | 2 | 5 |
1 | 3 | 4 |
2 | 3 | 4 |
3 | 3 | 3 |
從上面的分析咱們也不可貴出結論
\(n\)個相同的小球放到\(m\)個相同的盒子裏,盒子能夠爲空的方案數 與一個整數\(n\)拆成\(m\)段非遞減序列的方案數相同
設\(f[n][m]\)表示\(n\)個小球放到\(m\)個相同的盒子裏,盒子能夠爲空的方案數
邊界條件爲\(f[0][k] = 1, f[1][k] = 1, f[k][1] = 1\)
遞推方程\(f[n][m] = \begin{cases} f[n - m][m] + f[n][m - 1] &n >= m \\ f[n][m - 1] &n < m \end{cases}\)
解釋一下:
咱們考慮這\(m\)個位置中是否有空盒子
顯然:答案 = \(m\)個位置中至少有\(1\)個位置爲空的方案 + \(m\)個位置中全不爲空的方案
咱們能夠先在全部盒子裏都放了一個,而後對剩下的球討論
一樣能夠獲得一個結論:
\(n\)個相同的球,放到\(m\)個相同的盒子裏,盒子不能爲空的方案數 與把整數\(n\)拆成\(m\)段,每段不能爲\(0\)的方案數相同
設\(g[n][m]\)表示\(n\)個小球放到\(m\)個相同的盒子裏,盒子不能爲空的方案數
則\(g[n][m] = f[n - m][m]\),
\(ans = [n <= m]\)