CF1528F

题意

对于一个长度为\(n\)的正整数序列\(\{a_i\}_{i=1}^n\),定义其合法当且仅当存在一个长度为\(n\)的非负整数序列\(\{b_i\}_{i=1}^n\),使得\(\{a_i+b_i\}_{i=1}^n\)构成一个\(n\)阶排列。
对于任意合法的序列\(\{a_i\}_{i=1}^n\),一个长度为\(K\)的序列\(\{c_i\}_{i=1}^K\),定义其合法当且仅当:\(\forall i\in[1,K]\),满足\(a_{c_i}=a_{c_1}\)
\(n\le 10^9,K\le 10^5\)

做法

引理:序列\(\{a_i\}_{i=1}^n\)合法当且仅当,有\(n\)个车位,第\(i\)个人想停的位置为\(a_i\),若已经存在车了,则走到下一个空位置。

容易证明。

这是经典的parking function问题,方法是构造一个环,有\(n+1\)个位置,令\(a_i\in[1,n+1]\),这样总方案数为\((n+1)^n\),合法的概率为\(\frac{1}{n+1}\),故合法方案数为\((n+1)^{n-1}\)

这里,\(a_{c_1}\)是多少并不重要(在答案基础上乘上\(n+1\),由于最后还要除\(n+1\),所以根本不需要管),枚举其个数,有:

\[ans=\sum\limits_{i=0}^n {n\choose i}i^Kn^{n-i} \]

这是个经典问题,容易化简得到:

\[\sum\limits_{j=0}^K \begin {Bmatrix} K \\ j\end {Bmatrix}j!{n\choose j}(n+1)^{n-j} \]

求一行的斯特林数容易做到\(O(K\log K)\)

故总复杂度为\(O(K\log K)\)

posted @ 2021-05-27 09:23  Grice  阅读(116)  评论(0编辑  收藏  举报