「科技」求欧拉数单项

这个是老科技了,但还是记一下。

问题:给定 (n, k),求有多少个 (n) 阶排列 (p_1, p_2, cdots, p_n),满足恰有 (k)(p_i < p_{i - 1})

分析:(F(n, k)) 表示有小于 (k) 个的方案数,答案就是 (F(n, k + 1) - F(n, k))

考虑 ([0, 1)) 间均匀随机的实数序列 (a_1, a_2, cdots, a_n)。因为是随机的所以 (a_i) 可以看作互不相同,(a) 序列就可以看作是排列。

再定义序列 (b_1, b_2, cdots, b_n),满足 (b_i = a_i - a_{i - 1} + [a_i < a_{i - 1}]),其实就是在环上 (a_{i - 1}) 顺时针走到 (a_i) 的距离。根据这个组合意义,可以发现 (b_1, b_2, cdots, b_n) 也是 ([0, 1)) 间的均匀随机数,并且 (a) 满足条件当且仅当 (sum b_i < k)

缩放一下,令 (b_i)([0, m)) 间的均匀随机数,限制变成 (sum b_i < km)。当 (m o infty) 时,可以假设 (b_i) 都是整数。这样就变成了插板法,推一下式子:

[egin{align*} frac{F(n, k)}{n!} = & lim_{m o infty} frac{1}{m^n} left[ sum_{i = 0}^{k - 1} inom{n}{i} (-1)^i inom{(k - i) cdot m}{n} ight] \ F(n, k) = & sum_{i = 0}^{k - 1} inom{n}{i} (-1)^i (k-i)^n end{align*} ]

然后就做完了!

提交记录

原文地址:https://www.cnblogs.com/Alfalfa-w/p/15399865.html