計數的一些東西

2022-05-07 20:51:08 字數 1732 閱讀 3983

從n個物品中選m個,那麼就有\(\frac\)種選法,即為\(c^m_n\)或\(\binom\)

有幾個公式:

\[c_n^m=c_^+c_^

\]\[\sum_ic_n^i=2^n

\]二項式定理:\((x+y)^n=\sum_ic_n^ix^iy^\)

\[\sum_^n(-1)^kc_n^k=[n=0]

\]二項式反演: $$f_i=\sum_jc_i^jg_j\leftrightarrow g_i=\sum_j(-1)c_ijf_j$$

可重組合:

從n個物品中選m個,每個物品都可以任意選,方案數為\(\binom\)

簡單來說,就是要求$$|u\cap \bar a_1\cap \bar a_2\cap \cdots \cap \bar a_k|$$

這個東西就等於$$\sum_(-1)^|u\cap s_1\cap s_2\cap \cdots\cap s_|$$

有兩個顯然結論:

\(min\,c\}=max\,min\\}\)

\(max\=a+b-min\\)

然後就有$$max_^n=\sum_(-1)^min$$

\[min_^n\=\sum_(-1)^max\

\]卡特蘭數\(c_n=\sum_c_ic_\),\(c_0=c_1=1\)。

還有乙個遞推式\(c_n=c_(4n-2)/(n+1)\)。

\(c_n=\frac^n}=c_^n-c_^\)。

還有乙個很像的數列是\(f_n=f_+\sum_^f_if_\)

他的遞推式是\(f_n(n+1)=(6n-3)f_-(n-2)f_\)

把n個物品放到m個無序集合且不允許集合為空的方案數為第二類斯特林數,記為\(s(n,m)\)或\(\beginn\\m\end\)。

遞推式:\(s(n,m)=s(n-1,m-1)+m*s(n-1,m)\)考慮定義,就是列舉下乙個物品單獨為乙個集合或和其他的元素同在乙個集合(或是否是這個集合的最後乙個元素)。

容斥式子:\(s(n,m)=\frac\sum_k(-1)^kc_m^k(m-k)^n\)

其意義就是列舉空的集合的數量,因為集合是無序的,所以要除以\(m!\)。

如果把\(\frac\)乘進去,可以得到\(s(n,m)=\sum_k\frac\frac\),這樣就可以直接卷積。

性質: $$nk=\sum_ks(k,i)\cdot i!\cdot c_n^i$$

左邊就是把k個物品放到n個集合裡,右邊就是列舉放到哪幾個集合裡。

第一類斯特林數就是把n個物品劃分為m個圓排列的方案數,記為\(s(n,m)\)或\(\left[\beginn\\m\end\right]\)。

遞推式:\(s(n,m)=s(n-1,m-1)+(n-1)s(n-1,m)\)。因為這個是圓排列,所以每乙個元素有n-1中插法。

還有有符號的第一類斯特林數,記為\(s_s(n,m)=(-1)^s_u(n,m)\)。

\(s(n,m)\)的生成函式是\(\prod_^(x+i)\),\(s_s(n,m)\)的生成函式是\(\prod_^(x-i)\)。

一些性質(不帶下標預設為無符號):

\(x^}=\sum_is_s(n,i)x^i,x^}=\sum_is(n,i)x^i\)

\(\sum_is(n,i)=n!\)

\(\sum_is_s(n,i)=[n=0]\)

\[f_i=\sum_js(i,j)g_j\leftrightarrow g_i=\sum_j(-1)^s(i,j)f_j

\]

c stl 一些東西

std map 其key是基於比較運算子的,因此自定義型別需要為該型別設定比較運算子操作 class a private int mm std mapkk std unordered map 基於hash實現,需要為自定義型別設定 運算子和雜湊函式 class a int get value con...

一些基礎的東西

在c 中宣告變數使用下述的語法 但是在c 中有變數初始化的要求,即c 編譯器需要用某個初始值對變數進行初始化,之後才能在操作中引用該變數。c 有兩個方法可確保變數在使用前進行了初始化 變數是類 class 或結構 struct 中的字段 field 如果沒有顯式初始化,在預設狀態下建立這些變數時,其...

SVN的一些東西

例如 主幹mainproject,分支 branchproject 1 將分支合併到主幹 url位址路徑一定要對 找到主幹檔案mainproject,右擊 tortoisesvn merge.合併 選擇第乙個 merge a range of revisions 合併乙個版本範圍 接著在 url t...