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)\)。