为新年的军队做一点铺垫。
考虑转为算概率,然后考虑一个有趣的映射:计算 n 个在 (0,1) 上均匀分布的实数 α1,α2,…,αn,然后通过考虑每个实数的排名来考虑原来的排列。
根据对称性,这样得到的概率是相等的。
令 α0=0,考虑差分 βi=(αi−αi−1)mod1,容易知道这样建立了 α 到 β 之间的双射。
进一步,若有 k 个位置 i 满足 αi<αi+1,那么 n∑i=1βi=an+n−1−k。
所以我们的问题又转化为计算对 β1,β2,…,βn∈(0,1)n 的均匀分布,n∑i=1βi∈(n−1−k,n−k) 的概率。
考虑差分成 n∑i=1βi<n−k,然后考虑对单个 βi<1 的限制进行容斥。有 n−k∑i=0(ni)(−1)i(n−k−i)ni!=n−k∑i=0(−1)ii!(n−i)!(n−k−i)n
卷积即可。
代码:
1 |
|