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\) (其实这里大于小于没关系,是对称的)
注意最后 \(+1\) 就是 \(n=1\) 的情况
简写一下 \(f(x,y,t)\)
注意到答案就是 \(n![x^{n-1}y^{m}]\int_{0}^{1}f(t)\mathrm{d}t\) ,所以我们如果能求出 \(f\) ,就有推式子的空间了,接下来我们考虑解出 \(f\) ,两边求导,有
显然有一个解为 \(f(t)=Ce^{x(1-y)t}\) , \(C\) 为一个常数
将式子带到 \(t=0\) 与 \(t=1\) 时的原式中,设 \(I=\int_0^1f(t) \mathrm{d}t\) ,所以有
就有 \(C=\frac{1-y}{1-ye^{x(1-y)}}\) ,故
我们把 \(e^{x(1-y)}\) 先看作一个常量,有
故
由于 \(x\) 只在 \(e\) 指数上,所以可以写作
就可以 \(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\) ),求概率,那么二项式反演一下就有式子
当 \(V \rightarrow \infty\) 时,这个问题就等价于之前的问题了,有
差分一下就可以得到原问题的答案了,可以发现最终的式子两种做法得出来的是一样的