CF1349F Slime and Sequences [生成函數]

(容易觀察得到,本文的公式都是直接從題解裏面抄過來的。)

代碼咕了,所以不從題解裏面抄過來的內容全部不保證正確。

Easy Version

觀察樣例,發現對於 \(1\le n\le 3\) ,合法序列個數恰好是 \(n!\) ,所以猜想合法序列能和排列一一對應。

我的想法:

對於一個合法序列,從最大值的最左邊出現位置 \(x\) 開始跳。如果 \(x\) 不是 \(a_x\) 的最右邊出現位置那麼往下一個位置跳(往右),否則往 \(a_x-1\) 的左端點跳(往左)。特別地, 1 的右端點往 \(mx\) 的左端點跳(任意)。這樣可以構造出一個環,我們令起始點是 \(mx\) 的左端點,即可得到方案數 \(n!\)

從一個環+一個起始點對應回去也是類似的。

環+點怎麼變成排列呢?那就是任取一個排列,連邊 \(p_i\to p_{i+1}\) ,並令 \(p_1\) 是起始點即可。

現在就很好看了。對於一個排列,從 \(p_1\) 開始,分成若干個極長連續上升子段,那麼每一段都是相同的,並且段之間單調遞減。

由於這東西是很對稱的,所以爲了與題解統一,變成:分成若干個極長連續下降子段,每個位置對應的值是前面的小於號的個數。

對於一個值的出現次數,容易想到要考慮每個位置的貢獻,所以要求出所有 \(f_{i,j}\) 表示 \(i\) 個數中恰好有 \(j\) 個小於號的方案數。

顯然可以容斥。設 \(g_{i,j}\) 表示 \(i\) 個數“至少”有 \(j\) 個小於號的方案數(欽定 \(j\) 個小於號,其他隨便擺),有 \(g_{i,j}=S(i,i-j)\times (i-j)!=i![z^i](e^z-1)^{i-j}\) 。然後有 \(f_{i,j}=\sum_k {k\choose j}(-1)^{k-j}g_{i,k}\)

注意這裏如果選擇欽定 \(i-j-1\) 個大於號,那麼容斥係數會變成 \({i-j-1 \choose i-k-1}(-1)^{i-k-1}\) ,會非常醜陋,甚至會使得下面推不出一個好看的形式。

此時我們有

\[ans_{k+1}=\sum_{i=1}^n {n!\over i!}\sum_{j=0}^i {j\choose k}(-1)^{j-k}i![z^i](e^z-1)^{i-j}\\ =n!\sum_j {j\choose k}(-1)^{j-k}\sum_{i=\max(1,j)}^n [z^i](e^z-1)^{i-j} \]

注意到最後一個求和符與 \(k\) 無關,所以只要能預處理出後面,就可以在 \(O(n^2)\)\(O(n\log n)\) 的時間內得到答案。暴力預處理也是 \(O(n^2)\) 的。

Hard Version

\[\sum_{i=j}^n [z^i](e^z-1)^{i-j}=[z^{j}]\sum_{i=0}^{n-j} ({e^z-1\over z})^i \]

\(F={e^z-1\over z}\) ,再化簡成

\[[z^j]{1\over 1-F}-{F^{n-j+1}\over 1-F} \]

前者可以直接求出來,所以真正要求的就是 \([z^j]{F^{n-j+1}\over 1-F}\) 。這東西恰好是

\[[z^{n+1}]{(zF)^{n-i+1}\over 1-F} \]

\(w(z)=zF(z)\)\(\phi(z)\) 滿足 \({w(z)\over \phi(w(z))}=z\) (即 \(\phi(z)={z\over w^{-1}}\) ),即 \({zF(z)\over \phi(w(z))}=z\) ,即 \(F(z)=\phi(w)\)

所以現在要求

\[[z^{n+1}u^{n-i+1}]\sum_k {(uzF)^k\over 1-F}=[z^{n+1}u^{n-i+1}]{1\over 1-\phi(w)}{1\over 1-uw} \]

(爲什麼要引入 \(\phi\) 呢?這樣可以使得所有 \(z\) 外面都包着一個 \(w\) ,方便反演。)

反演,把 \(w\) 搞掉,得到

\[[u^{n-i+1}z^n]{1\over n+1}\left(\left(\frac{1}{1-\phi(z)} \frac{1}{1-u z}\right)^{\prime} \cdot \phi(z)^{n+1}\right) \]

其中求導是對 \(z\) 求偏導。

暴力把求導展開,得到

\[=\frac{1}{n+1}\left[z^{n} u^{n-i+1}\right]\left(\phi(z)^{n+1}\left(\frac{u}{(1-\phi(z))(1-u z)^{2}}+\frac{\phi^{\prime}(z)}{(1-\phi(z))^{2}(1-u z)}\right)\right) \]

現在把 \({u\over (1-uz)^2}\)\({1\over 1-uz}\) 拆掉,經過推導得到

\[=\frac{1}{n+1}\left[z^{n}\right]\left(\phi(z)^{n+1}\left(\frac{(n-i+1) z^{n-i}}{1-\phi(z)}+\frac{\phi^{\prime}(z) z^{n-i+1}}{(1-\phi(z))^{2}}\right)\right) \\ =\frac{1}{n+1}\left(\left[z^{i}\right]\left(\phi(z)^{n+1} \frac{n-i+1}{1-\phi(z)}\right)+\left[z^{i-1}\right]\left(\phi(z)^{n+1} \frac{\phi^{\prime}(z)}{(1-\phi(z))^{2}}\right)\right) \]

我們知道 \(w=e^z-1\) ,所以 \(\phi(z)={z\over \ln(z+1)}\) ,然後就只需要抄板子了。

something more

兩種容斥方法,竟然無法推到同一個結果(或者是推導的難度不太一樣),非常離譜。

恆等式:

\[\sum_i {n-i\choose m-i}S(n,i)i!(-1)^{m-i}=\sum_i {i\choose m-1}(-1)^{m-i-1}S(n,n-i)(n-i)! \]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章