組合計數
關於記號
\[C_n^m={n\choose m}=A_n^m/m!=n^{\underline{m}}/m!
\]
插板法
-
插板法:分集合問題 \(\iff\) 不定方程正整數解計數問題
\[{n-1\choose m-1}
\]
創造條件法(構造雙射),即,構造元素集合 \(A,B\),以及一個 \(A,B\) 之間的雙射 \(f\),則把計數 \(A\) 變成計數 \(B\) 。
如果允許集合為空,則問題可以轉化為新增 m 個球時不允許為空的問題
-
不定方程解計數:有上界。難以處理,可以採用容斥。列舉幾個大於限制,則能夠求出至少 \(i\) 個大於 \(k\) 。
基本容斥思想:總共減去不符合的等於答案==交集等於全集減補集並集
\[\begin{aligned}
\]
&+(-1)^{m-1}\sum_{a_i<a_{i+1} }\left|\bigcap_{i=1}{m}S_{a_i}\right|+\cdots+(-1)|S_1\cap\cdots\cap S_n|
\end{aligned}
\[
- 問題4:容斥思想2:恰好等於k==(<=k)-(<=k-1)
## Catalan和折線法
- 格路計數:**構造雙射** 路線<==>操作序列
- 括號匹配問題:**構造雙射** 括號序列<==>左括號是向右走,右括號是向上走
**定理 合法括號序列的充分必要條件**
> 一個括號序列是合法括號序列,當且僅當它滿足:
>
> - 對於所有字首,左括號數量大於等於右括號數量
>
> - 對於整個序列,左括號數量等於右括號數量
這在轉化後的問題上等價於不碰到 y=x+1 並走到 (n,n)
考慮計數不符合的路徑,發現這些路徑都滿足與 y=x+1 有交點
那麼這些路徑沿著交點翻折,則可以證明這些不合法路徑與到達 (n-1,n+1) 的所有路徑構成雙射,從而容斥一步,得到 Catalan 數的定義。
\]
H_n = \binom{2n}{n} - \binom{2n}{n-1}
\[
本方法叫做 **折線容斥**
![](https://img2023.cnblogs.com/blog/2950259/202408/2950259-20240809120758187-1777564574.png)
- [JLOI2015] 騙我呢:性質1:每行都有恰好一個 [0,m] 中沒有出現
![](https://img2023.cnblogs.com/blog/2950259/202408/2950259-20240809120800180-73514330.png)
式子的係數很簡單,則可以 **在網格圖上畫出轉移**,可轉化為不碰到兩條直線的路徑數。
## Stirling
類似 dp 思路
- 第一類 Stirling 數:求把 $n$ 個不同元素構成 $m$ 個非空圓排列的方案數。
第二類 Stirling 數 :求把 n 個不同元素劃分 m 個非空子集的方案數
\]
\def\stira#1#2{\begin{bmatrix}#1\ #2\end{bmatrix}}
\def\stirb#1#2{\begin{Bmatrix}#1\ #2\end{Bmatrix}}
\stira{n}{k}=\stira{n-1}{k-1}+(n-1)\stira{n-1}{k}\
\stirb{n}{k}=\stirb{n-1}{k-1}+k\stirb{n-1}{k}
\[
dp 思想:第一類乘上 n-1 是因為把它放在某一個元素的左邊,第二類乘上 k 是因為前面集合不區分順序
- 普通冪轉下降冪公式:
\]
\def\stira#1#2{\begin{bmatrix}#1\ #2\end{bmatrix}}
\def\stirb#1#2{\begin{Bmatrix}#1\ #2\end{Bmatrix}}
mn=\sum_{i=0}m{\stirb{n}{i}m^{\underline{i}}}
\[
組合意義易證。注意這個求和的上標,只要大於 $\min\{n,m\}$ 即可(要麼就是集合不夠要麼就是元素不夠)
- CF1278F Card 推推推推推推推推推
- 自然數冪和:
需要一個 **上指標求和公式** :
\]
\sum_{i=0}^n{i\choose k}={n+1\choose k+1}
\[
證明1
該問題可以與 $n+1$ 個元素的 $k+1$ 大小子集個數建立雙射,原因如下:
\]
{n+1\choose k+1}=\sum_{i=1}^{n+1} { i-1\choose k}=\sum_{i=0}^{n} { i\choose k}
\[
以上求和的意義是列舉其中一個元素的位置。
證明2
當然上述公式求和的下標還可以改為 $i=k$ ,此時補充一個 ${k\choose k+1}$ (?)
證明3
按照遞推公式依次展開可以得到。
- 自然數冪和-拉格朗日插值
$n+1$ 個點值可以唯一確定一個 $n$ 次多項式。使用:
\]
f(x) = \sum_{i=1}^{n} \prod_{j\neq i }\frac{x-x_j}{x_i-x_j} y_i
\[
將點值帶入易證
![](https://img2023.cnblogs.com/blog/2950259/202408/2950259-20240809120801501-177763048.png)
## 其他模型
- AGC013D:轉化問題是比較容易的。重複處理:對於所有平移可以產生的重複方案,我們強制其“貼邊界”(即曾經到底過0)才記錄答案,考慮設
![](https://img2023.cnblogs.com/blog/2950259/202408/2950259-20240809120802790-352985691.png)
- CF1895F:關鍵轉化:**弱化限制/差分法** ![](https://img2023.cnblogs.com/blog/2950259/202408/2950259-20240809120803977-1713188252.png)
正確性顯然。
條件2讓我們想到差分陣列,該條件可以轉化為差分陣列取值在 $[-k,k]$ 之內
現在還需要表達最小值的限制,我們可列舉最小值的限制,配合計算差分陣列的數量,可以知道這一部分答案是 $(x+k)(2k+1)^{n-1}$
對於最大值那一部分的答案,考慮 $x$ 很小,設 $f_{i,j}$ 表示填了 $i$ 個數,最後一個是 $j$ ,可以矩陣快速冪計算。
\]