本文為上課的學習筆記
1.排列&組合
組合,從\(n\)個元素中選\(m\)個,不及順序
方案數:
排列,從\(n\)個元素中,選\(m\)個,考慮順序
方案數:
2.組合數性質
\(\tbinom{n+m}{n}=\tbinom{n+m}{m}\)
很顯然,從\(n+m\)個元素中選\(n\)個,和選\(m\)個不要是一樣的
\(\tbinom{n}{m}=\tbinom{n-1}{m-1}+\tbinom{n-1}{m}\)
一個很重要的性質,一般可以在\(n,m\)都不大的時候做遞推來預處理
現在已經知道了有\(n-1\)個元素的情況,考慮第\(n\)個元素
如果選它,則前\(n-1\)的元素中只能選\(m-1\)個,所以方案數為\(\tbinom{n-1}{m-1}\)
如果不選它,則前\(n-1\)的元素中要選\(m\)個,所以方案數為\(\tbinom{n-1}{m}\)
根據加法原理,相加即可
\(\tbinom{n+m+1}{m}=\tbinom{n+m}{m}+\tbinom{n+m-1}{m-1}+\tbinom{n+m-2}{m-2}+\dots+\tbinom{n}{0}\)
根據上面那個式子,我們可以把\(\tbinom{n+m+1}{m}\)拆成\(\tbinom{n+m}{m}+\tbinom{n+m}{m-1}\)
然后,保留\(\tbinom{n+m}{m}\),將\(\tbinom{n+m}{m-1}\)繼續按同樣的方法拆
最后一次拆就是:\(\tbinom{n+2}{1}=\tbinom{n+1}{1}+\tbinom{n+1}{0}\)
然后\(\tbinom{n+1}{0}=\tbinom{n}{0}\),就不用拆了
\(\sum_{i=0}^n \tbinom{n}{i}=2^n\)
等式左邊意義是從\(n\)個元素中選\(i,0\leq i\leq n\)個的方案和,則為從\(n\)個元素中選任意個的方案和
即為\(n\)個元素的子集個數\(2^n\)
\(\tbinom{n}{0}-\tbinom{n}{1}+\tbinom{n}{2}-\dots=0\)
簡單說,就是從\(n\)個元素中選偶數個的方案數和和選奇數個的方案數和相等
這個東西可以從楊輝三角上考慮
眾所周知,楊輝三角的每一位等於它的左上方的數加上它右上方的數
那么取每一行的奇數位或偶數位(即從左到右數是第奇數/偶數個),都可以表示為它上一行所有數的和的形式
可以自己畫一個體會體會,太懶所以不畫在這了
\(\tbinom{m}{m}+\tbinom{m+1}{m}+\dots+\tbinom{n}{m}=\tbinom{n+1}{m+1}\)
和第三個式子證法有些相似相信你們已經忘了第三個式子是哪個式子
還是一項一項拆開
\(\tbinom{n+1}{m+1}=\tbinom{n}{m}+\tbinom{n}{m+1}\)
保留\(\tbinom{n}{m}\),繼續拆\(\tbinom{n}{m+1}\)為\(\tbinom{n-1}{m}+\tbinom{n-1}{m+1}\)
然后再拆后面那項
一直拆到\(\tbinom{m+1}{m+1}=\tbinom{m}{m}+\tbinom{m}{m+1}\)
當然,\(\tbinom{m}{m+1}=0\),所以得證
\((x+y)^n=\sum_{i=0}^n \tbinom{n}{i}x^iy^{n-i}\)
二項式展開,比較重要,可以看出它也對應了楊輝三角
不過想嚴格證明好像挺難
\(\sum_{i=0}^n \tbinom{n}{i}^2=\tbinom{2n}{n}\)
假設現在有\(2n\)個球,等式右邊就是選\(n\)個的方案數
考慮將他們分成兩組,每組\(n\)個,那么共選\(n\)個的方案數也可以表示為:
第一組選\(0\)個,第二組選\(n\)個,加上第一組選\(1\)個,第二組選\(n-1\)個.....即第一組選\(i\)個,第二組選\(n-i\)個
即為\(\sum_{i=0}^n \tbinom{n}{i}\tbinom{n}{n-i}=\sum_{i=0}^n\tbinom{n}{i}^2\)
吸收公式:\(\tbinom{n}{m}=\frac{n}{m}\tbinom{n-1}{m-1}\)
直接用定義展開即可
\(\sum_{i=0}^n\tbinom{i}{m}=\tbinom{n+1}{m+1}\)
從 \(0,1,2\cdots n\) 中選 \(m+1\) 個數,最大數為 \(i\) 的方案數為 \(\tbinom{i}{m}\)
\(\tbinom{n}{m}\tbinom{m}{k}=\tbinom{n}{k}\tbinom{n-k}{m-k}\)
左邊:從 \(n\) 個里面選 \(m\) 個,再在這 \(m\) 個里選 \(k\) 個
右邊:直接從 \(n\) 個里面選 \(k\) 個,然后在從剩下的 \(n-k\) 個里選左邊的描述里第二次選淘汰掉的 \(m-k\) 個
和下降冪相關聯:\(\dbinom{n}{k}\times k^{\underline{m}}=\dbinom{n-m}{k-m}\times n^{\underline{m}}\)
仍然是拆成階乘消一消
3.算組合數
這還用算?直接暴力枚舉就行(bushi
3.1遞推
復雜度\(O(nm)\)
直接用之前推的第二個性質,一邊加一邊取模
3.2約分
適用於\(m\)較小,\(n\)較大
對於模數是質數,可以直接逆元
如果不是,對分數上下分別分解質因數來做除法,然后快速冪合並
3.3Lucas
適用於\(n,m\)較大,\(k\)為小質數
關於它的證明和使用看這里
3.4exLucas
不過和Lucas關系好像並不大
適用於\(n,m\)較大,\(k\)較小但不保證是質數
具體寫起來還是挺復雜挺難的,也可能是我太蒻
具體看這里
花了好長時間才搞懂,然后寫代碼又寫了一晚上+一早上......我太蒻了
4看點題
4.1P4369
把\(x\)拆成\(k\)個不同組合數之和
很傻的一個題,前\(k-1\)個寫為一些元素選0個,每個都是1
最后一個寫成\(x-k+1\)個元素選一個
然后就沒了
4.2P4370
用到一種神奇的取\(\log\)方法快速比較兩個組合數大小
具體看題解
4.3P3746
並沒有做出了,待更
做出來了,懶得更