ck
n=n!
k!∗(
n−k)
! ck
n=ck
n−1+
ck−1
n−1
ck+1
n=n−
kk+1
ckn
n個數進行排列,每個數都不在自己的位置上的方案數 dn
=(n−
1)∗(
dn−1
+dn−
2)推導:
對於第
n 個數,不放在
n位置,一共有 (n
−1) 種情況 第 n
個數放定後,假設放在
k上,考慮第
k 個數
1. 放在
n位置上,則剩下 n−
2 個數,錯排數 dn
−22. 不放在
n 位置上,則剩下 n−
1個數 將第k
個數的原本位置當做
n(不放在
n 位置上),錯排數 dn
−1所以 dn=
(n−1
)∗(d
n−1+
dn−2
) 其中d
0=1 , d1
=0
1) 將
n 個小球,放入
k個盒子裡,每個盒子不為空,求方案數 ck
−1n−
1 將
n 個小球排成一行,中間插入 k−
1個隔板,隔板插入的位置有 n−
1 個
故從 n−1
個位置中選擇 k-1個,方案數為 ck
−1n−
1 2) 將
n 個小球,放入
k個盒子裡,允許盒子為空,求方案數 ck
−1n+
k−1
與上種情況基本相同,但允許盒子為空,所以人為在每個盒子裡先加乙個球
這樣問題就轉化為上種情況,計算出方案後,再把加的球拿掉,方案數不變
這樣就有 n+
k 個球,從 n+
k−1 個位置中選擇 k−
1 個隔板
n 個不相同的球,從中取
k個,可以重複取,問方案數 cn
−1n+
k−1
可以看作是
n 個盒子,放入
k個球,乙個盒子裡的球數代表這個數被取了多少次
用隔板法求解c(
n,k)
%p=c
(n%p
,k%p
)×c(
n/p,
k/p)
雖說當
p 為質數時,組合數可以利用逆元 (
1)求得 但是當
n 和
k很大的時候,階乘逆元可能處理不了那麼多,所以就要利用 lucas定理。
這樣一來因為只需求 c(
n%p,
k%p)
,所以只需預處理到模數
p 的階乘即可。
其時間效率為 o(
log(
n)),
log 的底為模數 p
設有向無環的網格中,起點集為 u(
u1,u
2,..
.,un
),終點集為 v(
v1,v
2,..
.,vn
) 設 f
(u,v
) 為
u 到
v的路徑方案數,則起點集
u 到起點集
v的不相交路徑數為 de
t(m)
=∣∣∣
∣∣∣∣
f(u1
,v1)
f(u2
,v1)
⋮f(u
n,v1
)f(u
1,v2
)f(u
2,v2
)⋮f(
un,v
2)⋯⋯
⋱⋯f(
u1,v
n)f(
u2,v
n)⋮f
(un,
vn)∣
∣∣∣∣
∣∣這個行列式的值
具體證明方法好像是用容斥定理
乙個不嚴謹的證明:
設 σ(容斥的計算複雜度為 o(v)為終點的乙個排列,σi
為排列的第
i 項
如果 i
ui到 vj
與uj到 vi
的路徑就必然產生至少乙個交錯點
這裡有乙個至少,所以容斥交點個數來計算總方案數
接下來用容斥定理來計算方案數,易得容斥過程中的某一項為 (−
1)t(
f(u1
,σ1)
+f(u
2,σ2
)...
+f(u
n,σn
))接下來就是確定這一項的符號,即
t 的奇偶性
而這與路徑的至少有幾個交點有關
根據上述,可以發現至少交點個數與σ(
v)中的逆序數有關 由於(
ui,v
i)這樣順序對應時(交點個數最少為 0),容斥的符號為正
所以觀察發現,
t 的奇偶性與逆序數的奇偶性一致
那麼這樣一來,可以將容斥的求和過程轉化為乙個行列式
n!),而行列式的計算複雜度就降到了 o(
n3)
組合計數(初步)
組合數學主要是研究某組離散物件滿足一定條件的安排的存在性 構造及計數等問題。組合計數理論是組合數學中乙個最基本的研究方向,主要研究滿足一定條件的安排方式的數目及其計數問題。本課程主要介紹組合數學中常見的和重要的一些計數原理 計數方法和計數公式,包括一般的排列 組合的計算以及生成函式 容斥原理 反演原...
組合計數小啟發
在dp的領域中還有的很大一部分就是組合計數。以前做了fhq在集訓隊作業中的 連邊 這道題,大概就是要你給乙個圖連邊是的若干個點度數為奇數。比較容易發現是一道dp題,但是怎樣保證狀態不重不漏?常用的方法就是增維,比如按照排序大小擴充套件啦,按照字典序擴充套件啦從而使得狀態不重,但是還有兩種方法可以使得...
多重集組合計數
n 種物品,第 i 種物品有ai 個。不區分同類物品,從中取出 m 個,問有多少種取法 答案取模109 7 1 n 1000 1 m 1000 1 ai 1000 dp i j 表示前面 i 種物品,取出 j 個的取法數目。考察第 i 種物品取了 k 個 0 k min ai j 那麼在剩下的 i ...