記乙個排列 \(p\) 的公升高為 \(k\) 當且僅當存在 \(k\) 個位置 \(i\) 使得 \(p_i。
那麼定義尤拉數 \(\left\langle\beginn\\k\end\right\rangle\) 表示長度為 \(n\) 且有 \(k\) 個上公升的排列的數量。
通過討論 \(n\) 在最左邊,最右邊還是中間可以得出轉移:
\[\left\langle\beginn\\k\end\right\rangle = (k + 1)\left\langle\beginn - 1\\k\end\right\rangle + (n - k) \left\langle\beginn - 1\\k - 1\end\right\rangle
\]高妙的組合意義
考慮計算 \(\left\langle\beginn\\k\end\right\rangle / n!\) 也就是概率,可以發現,對於 \(n\) 個實數的均勻分布 \((a_1, a_2, \cdots, a_n) \in (0, 1)^n\) 產生和排列 \(p\) 相同的偏序關係的概率是 \(\frac 1\),這樣我們就可以將問題轉化為 \(a_i < a_\) 有 \(k\) 個的概率。
將 \(a\) 進行差分,定義 \(a_0 = 0,\ b_i = (a_i - a_) \bmod 1\),顯然 \(b_i \in (0, 1)\)。
考慮 \(b_i\) 的實際意義,發現當 \(a_ < a_i\) 時,\(b_i = a_i - a_\),否則 \(b_i = 1 + a_i - a_\),而 \(a_ < a_\) 有 \(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\),能夠列出式子:
\[f(k) = \sum_^k (-1)^i \binom ni g(k - i)
\]接下來只需要知道如何計算 \(g(k)\) 即可。
將 \(n\) 個變數做字首和,設為 \(t_i\),那麼只需要滿足 \(t_i < t_\) 且 \(t_n < k\) 的條件即可,由最開始的性質,可以將其對應到排列上得出概率為 \(\frac 1 \)。又因為 \(g(k)\) 是「體積」,所以 \(g(k) = \frac \),即:
\[f(k) = \frac 1 \sum_^k (-1)^i \binom ni (k - i)^n
\]於是 \(\left\langle\beginn\\k\end\right\rangle\) 可以做到計算乙個 \(\mathcal o(n)\),計算一行 \(\mathcal o(n \log n)\)。
直接容斥
廣告設 \(f(n, k)\) 表示長度為 \(n\) 的排列,欽定有 \(k\) 個<
的方案數。
考慮將<
看成邊,那麼排列中將會形成 \(n - k\) 個連通塊,而連通塊內部必須有序,連通塊之間可以任意打亂順序,所以方案數就是 \((n - k)!\begin n\\n - k \end\)。
由二項式反演:
\[\begin
\left\langle\beginn\\k\end\right\rangle &= \sum_^n (-1)^ \binom ik (n - i)!\begin n\\n - i \end\\
&=\sum_^n (-1)^ \binom ik \sum_^ \binom j (-1)^ j^n\\
&=\sum_^ j^n (-1)^ \sum_ \binom ik \binom j\\
&= \sum_^ (-1)^ j^n \binom
\end
\]解釋一下最後一步吧,由於 \(\binom ik = [x^] \frac 1}, \ \binom j = [x^] \frac 1}\),所以 \(\sum_i \binom ik \binom j = [x^] \frac 1 } = \binom \)。
同樣可以直接卷積求出一行尤拉數。
尤拉篩學習筆記
int prime maxn tot bool is prime maxn void choose int n 考慮你在設計乙個線性篩質數演算法 你想,既然要做到 線性 那麼每個數必須只能被篩一次 所以我們猜想,乙個合數只會被它的最小素因數篩去 memset is prime,1,sizeof is...
尤拉迴路 尤拉路 學習筆記
來補乙個小小的科技 cy 先咕著,切完ejoi再來填 doge upd 2020.7.23 前來填坑。u1s1 填坑是真心難受,以後爭取不做鴿子 flag 若乙個迴路經過一張圖的每條邊恰好一次,那麼這個迴路稱為這張圖的尤拉迴路。若一條起終點不同的路徑經過一張圖的每條邊恰好一次,那麼這條路徑稱為這張圖...
尤拉函式基礎 學習筆記
供複習,無證明過程。當 n 為質數,有 varphi n n 1 尤拉函式是積性函式。當 x,y 互質,有 varphi xy varphi x times varphi y 當 x 是奇數,有 varphi 2x varphi x varphi x x prod n 1 frac 當 p 為質數 ...