定義
記一個排列 \(P\) 的升高為 \(k\) 當且僅當存在 \(k\) 個位置 \(i\) 使得 \(P_i<P_{i+1}\)。
那么定義歐拉數 \(\left\langle\begin{matrix}n\\k\end{matrix}\right\rangle\) 表示長度為 \(n\) 且有 \(k\) 個上升的排列的數量。
遞推式
通過討論 \(n\) 在最左邊,最右邊還是中間可以得出轉移:
計算
高妙的組合意義
考慮計算 \(\left\langle\begin{matrix}n\\k\end{matrix}\right\rangle / n!\) 也就是概率,可以發現,對於 \(n\) 個實數的均勻分布 \((a_1, a_2, \cdots, a_n) \in (0, 1)^n\) 產生和排列 \(P\) 相同的偏序關系的概率是 \(\frac 1{n!}\),這樣我們就可以將問題轉化為 \(a_i < a_{i + 1}\) 有 \(k\) 個的概率。
將 \(a\) 進行差分,定義 \(a_0 = 0,\ b_i = (a_i - a_{i - 1}) \bmod 1\),顯然 \(b_i \in (0, 1)\)。
考慮 \(b_i\) 的實際意義,發現當 \(a_{i - 1} < a_i\) 時,\(b_i = a_i - a_{i - 1}\),否則 \(b_i = 1 + a_i - a_{i - 1}\),而 \(a_{i - 1} < a_{i}\) 有 \(k + 1\) 個(\(a_0 = 0\)),所以說 \(\sum b_i = n - k - 1 + a_n \in (n - k - 1, n - k)\)。這樣,問題就變為了給定 \(n\) 個 \((0, 1)\) 之間的實數 \(x_1, x_2, \cdots, x_n\),求滿足 \(\sum x_i \in (n - k - 1, n - k)\) 的概率,可以轉化為 \(\sum x_i < n - k\) 的概率然后差分,設其為 \(F(n - k)\)。
使用幾何概型,由於樣本空間的“體積”是 \(1\),所以答案就是滿足條件的區域的“體積”。
設 \(G(k)\) 表示 \(n\) 個隨機變量沒有限制的情況下的滿足 \(\sum x_i < k\) 的區域的“體積”。
考慮容斥有多少個 \(x_i > 1\),能夠列出式子:
接下來只需要知道如何計算 \(G(k)\) 即可。
將 \(n\) 個變量做前綴和,設為 \(t_i\),那么只需要滿足 \(t_i < t_{i + 1}\) 且 \(t_n < k\) 的條件即可,由最開始的性質,可以將其對應到排列上得出概率為 \(\frac 1 {n!}\)。又因為 \(G(k)\) 是“體積”,所以 \(G(k) = \frac {k^n}{n!}\),即:
於是 \(\left\langle\begin{matrix}n\\k\end{matrix}\right\rangle\) 可以做到計算一個 \(\mathcal O(n)\),計算一行 \(\mathcal O(n \log n)\)。
直接容斥
設 \(F(n, k)\) 表示長度為 \(n\) 的排列,欽定有 \(k\) 個 <
的方案數。
考慮將 <
看成邊,那么排列中將會形成 \(n - k\) 個連通塊,而連通塊內部必須有序,連通塊之間可以任意打亂順序,所以方案數就是 \((n - k)!\begin{Bmatrix} n\\n - k \end{Bmatrix}\)。
由二項式反演:
解釋一下最后一步吧,由於 \(\binom ik = [x^{i - k}] \frac 1{(1 - x)^{k + 1}}, \ \binom {n - i}j = [x^{n - i - j}] \frac 1{(1 - x)^{j + 1}}\),所以 \(\sum_i \binom ik \binom {n - i}j = [x^{n - j - k}] \frac 1 {(1 - x)^{k + j + 2}} = \binom {n + 1}{k + j + 1}\)。
同樣可以直接卷積求出一行歐拉數。