1. 程式人生 >實用技巧 >其它 >驅動程式設計:登錄檔回撥,程序回撥,檔案回撥,程序隱藏斷鏈,視窗保護

驅動程式設計:登錄檔回撥,程序回撥,檔案回撥,程序隱藏斷鏈,視窗保護


組合數學:

概念與計數:

基本計數原理:

分類計算加法原理,分佈計算乘法原理。

簡單容斥與摩根定理:

  • \(\begin{vmatrix}A\cup B\end{vmatrix}=\begin{vmatrix}A\end{vmatrix}+\begin{vmatrix}B\end{vmatrix}-\begin{vmatrix}A\cap B\end{vmatrix}\)
  • \(\begin{vmatrix}A\cup B\cup C\end{vmatrix}=\begin{vmatrix}A\end{vmatrix}+\begin{vmatrix}B\end{vmatrix}+\begin{vmatrix}C\end{vmatrix}-\begin{vmatrix}A\cap B\end{vmatrix}-\begin{vmatrix}A\cap C\end{vmatrix}-\begin{vmatrix}C\cap B\end{vmatrix}+\begin{vmatrix}A\cap B\cap C\end{vmatrix}\)

摩根定理: 交集的補等於補集的並,並集的補等於補集的交。

即 \(\overline{A\cup B}=\overline{A}\cap\overline{B}\) \(\overline{A\cap B}=\overline{A}\cup\overline{B}\)

\[\left| \bigcup_{i=1}^n A_i\right|=\sum_{\varnothing\not={\rm J}\subseteq\{1,\cdots,n\}}(-1)^{\begin{vmatrix}{\rm J}\end{vmatrix}+1}\left| \bigcap_{{\rm j}\in{\rm J}} A_j\right|\\ \left| \bigcap_{i=1}^n \overline{A_i}\right|=\sum_{{\rm J}\subseteq\{1,\cdots,n\}}(-1)^{\begin{vmatrix}{\rm J}\end{vmatrix}}\left| \bigcap_{{\rm j}\in{\rm J}} A_j\right|\\ \left| \bigcap_{i=1}^n A_i\right|=\sum_{{\rm J}\subseteq\{1,\cdots,n\}}(-1)^{\begin{vmatrix}{\rm J}\end{vmatrix}}\left| \bigcap_{{\rm j}\in{\rm J}} \overline{A_j}\right|\\ \]

組合計數:

排列數:

從 \(n\) 個不同元素中依次取出 \(m\)​ 個元素排成一列,產生的不同排列的數量為:(取 \(m\) 個,將 \(m\) 個排序)

\[A_n^m(P_n^m)=\frac{n!}{(n-m)!} \]

組合數:

從 \(n\) 個不同元素中取出 \(m\) 個組成一個集合(不考慮順序),產生的不同集合的數量為:

\[C_n^m= \begin{pmatrix} n\\m \end{pmatrix} =\frac{n!}{m!(n-m)!} \]

性質:

  • \(A_n^k=C_n^k\times k!\)
  • \(C_n^m=C_n^{n-m}\)
  • \(C_n^m=C_{n-1}^m+C_{n-1}^{m-1}\) (楊輝三角)
  • \(\frac{k}{n}\times C_n^k=C_{n-1}^{k-1}\)
  • \(\sum_{i=0}^nC_n^i=2^n\)
  • \(\sum_{i=0}^n(-1)^iC_n^i=0\)

組合數求解:

單個組合數 \(O(n)\)

int C(int n, int k) {
	int p = 1, q = 1;
    for (int i = n - k + 1; i <= n; ++i)
        p *= i;
    for (int i = 1; i <= k; ++i)
        q *= i;
    return p / q;
}

求 \(C_i^j(i\in[0,n-1],j\in[1,i])\) 遞推 \(O(n^2)\)

for (int i = 0; i < n; ++i) {
    C[i][0] = 1;
    for (int j = 1; j <= i; ++j) {
        C[i][j] = C[i - 1][j - 1] + C[i - 1][j];
    }
}

二項式定理:

\[(a+b)^n=\sum_{k=0}^nC_n^ka^kb^{n-k}\\ (a-b)^n=\sum_{k=0}^n(-1)^kC_n^ka^kb^{n-k} \]

計數技巧:

演算法: