LOJ 2834 「JOISC 2018 Day 2」修行 题解

纯属搬运工

新年的军队大概是严格强于此题的,于是我们用新年的军队做法艹!

可以注意到就是求 \(n\) 阶排列有 \(m=k-1\)\(p_i<p_{i+1}\) 的排列数

注意到排列可以映射到 \([0,1]\) 上的 \(n\) 个随机变量,故设 \(f(x,y,t)\) 表示最后一个取 \(t\) 的概率密度函数。用 \(x\) 记录相邻个数,若是 \(n\) 阶排列那么次数就是 \(n-1\) ,同时若新加入的数小于最后加入的数就乘上个 \(y\) (其实这里大于小于没关系,是对称的)

\[f(t)=x(\int_{0}^{t} f(\tau)\mathrm{d}\tau+y\int_{t}^{1} f(\tau)\mathrm{d}\tau)+1 \]

注意最后 \(+1\) 就是 \(n=1\) 的情况

简写一下 \(f(x,y,t)\)

\[f(t)=x(\int_{0}^{t} f(\tau)\mathrm{d}\tau+y\int_{t}^{1} f(\tau)\mathrm{d}\tau)+1 \]

注意到答案就是 \(n![x^{n-1}y^{m}]\int_{0}^{1}f(t)\mathrm{d}t\) ,所以我们如果能求出 \(f\) ,就有推式子的空间了,接下来我们考虑解出 \(f\) ,两边求导,有

\[f'=x(1-y)f \]

显然有一个解为 \(f(t)=Ce^{x(1-y)t}\)\(C\) 为一个常数

将式子带到 \(t=0\)\(t=1\) 时的原式中,设 \(I=\int_0^1f(t) \mathrm{d}t\) ,所以有

\[1+xyI=C,1+xI=Ce^{x(1-y)} \]

就有 \(C=\frac{1-y}{1-ye^{x(1-y)}}\) ,故

\[\begin{align*} ans&=n![x^{n-1}y^m]f(t)\mathrm{d}t \\ &=n![x^{n-1}y^m]\int_{0}^{1}\frac{(1-y)e^{x(1-y)t}}{1-ye^{x(1-y)}}\mathrm{d}t \\ &=n![x^{n-1}y^m]\frac{1}{1-ye^{x(1-y)}}\int_{0}^{1}(1-y)e^{x(1-y)t}\mathrm{d}t \\ &=n![x^{n-1}y^m]\frac{1}{1-ye^{x(1-y)}}\frac{e^{x(1-y)}-1}{x} \\ &=n![x^ny^m]\frac{e^{x(1-y)}-1}{1-ye^{x(1-y)}} \end{align*} \]

我们把 \(e^{x(1-y)}\) 先看作一个常量,有

\[\frac{1}{1-ye^{x(1-y)}}=\sum_{i \ge 0}y^ie^{x(1-y)i} \]

\[ans=n![x^ny^m]\sum_{i \ge 0}y^i [e^{x(1-y)(i+1)}-y^i e^{x(1-y)i}] \]

由于 \(x\) 只在 \(e\) 指数上,所以可以写作

\[\begin{align*} ans&=n![y^m]\sum_{i \ge 0}y^i \frac{(1-y)^n(i+1)^n-(1-y)^ni^n}{n!} \\ &=\sum_{i \ge 0}[y^{m-i}](1-y)^n[(i+1)^n-i^n] \\ &=\sum_{i=0}^{m}(-1)^{m-i}\tbinom{n}{m-i}[(i+1)^n-i^n] \end{align*} \]

就可以 \(O(n)\) 做了

评测链接

 


 

UPD. 更为简单的做法 sto \(\text{K}\color{red}{\text{ubic}}\) orz

仍然是 \([0,1]\) 变量映射成排列,首先我们把问题改为求小于等于 \(m\)\(i \in [1,n-1] \cap \mathbb{N}\) 使得 \(p_i>p_{i+1}\) (注意是 \(>\) )个数,显然可以随便转化

我们将这 \(n\) 个变量 \(x_1,x_2,\cdots,x_n\) 放在一个周长为 \(1\) 的圆上(可以理解为把 \([0,1]\) 这段数轴首尾相接了)然后按照 \(0 \rightarrow a_1 \rightarrow a_2 \rightarrow \cdots \rightarrow a_n\) ,记第 \(i\) 次走了 \(a_i\) 的长度,首先有 \((a_1,a_2,\cdots,a_n)\)\((x_1,x_2,\cdots,x_n)\) 一一对应,所以可以把 \(a_i\) 看作 \([0,1]\) 上的随机变量

推一下可以发现对于任何一个 \(p_i>p_{i+1}\) 都可以凑出 \(1\) 的长度,最后还会有一小截剩余 \(len \in [0,1]\) ,所以可以转化为求 \(\sum_{i=1}^n a_i \le m+1\) 的概率(哇连续值域搞这种东东,开积!

有一种高妙做法(本质没有区别?),我们先求解一个这样的问题, \(n\)\([0,V] \cap \mathrm{Z}\) 的随机变量 \(a_1,a_2,\cdots,a_n\) 要求和不超过 \(V(m+1)\)\(m+1 \le n\) ),求概率,那么二项式反演一下就有式子

\[\begin{align*} ans&= \frac{1}{(V+1)^n}\sum_{i=0}^n (-1)^i \binom{n}{i} \binom{V(m+1)-i(V+1)+n}{n} \\ &= \frac{1}{(V+1)^n}\sum_{i=0}^n (-1)^i \binom{n}{i} \binom{(V+1)(m+1-i)+n-(m+1)}{n} \\ &= \frac{1}{(V+1)^n}\sum_{i=0}^m (-1)^i \binom{n}{i} \frac{\big[(V+1)(m+1-i)+n-(m+1)\big]^{\underline{n}}}{n!} \end{align*} \]

\(V \rightarrow \infty\) 时,这个问题就等价于之前的问题了,有

\[\lim_{V \rightarrow \infty}\frac{1}{(V+1)^n}\sum_{i=0}^m (-1)^i \binom{n}{i} \frac{\big[(V+1)(m+1-i)+n-(m+1)\big]^{\underline{n}}}{n!} = \frac{1}{n!}\sum_{i=0}^m (-1)^i \binom{n}{i} (m+1-i)^n \]

差分一下就可以得到原问题的答案了,可以发现最终的式子两种做法得出来的是一样的

posted @ 2022-02-14 10:23  一叶知秋‘  阅读(346)  评论(1编辑  收藏  举报