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)! \]

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