1. 程式人生 > 其它 >21.4.2 t3

21.4.2 t3

tag:組合計數,生成函式


\(p\) 為一個長度為 \(n\) 的序列,\(p_i\)\([1,K]\) 中隨機,設 \(a_i\)\(i\) 出現的次數,求 \(E(a_1^F\cdot a_2^F\cdots a_L^F)\)

\(n,K\leq10^9,\ F\leq10^3,\ L\cdot F\leq 5\cdot10^4,\ mod=2003\)


先考慮 \(F=1\) 時。設 \(x_{i,j}=[p_i=j]\),則:

\[a_i=\sum_{j=1}^nx_{i,j} \]\[E=E(\Pi_{i=1}^L(x_{i,1}+x_{i,2}+\cdots+x_{i,n})) \]

考慮它的意義,對於每個值 \(i\)

,選一個位置 \(j\),且所有值所選的位置不能相同,一個方案的權值為 \((\frac{1}{K})^L\)。所以

\[ans=(\frac 1K)^L\binom nLL! \]

拓展到一般情況,設\(f(i)=(x_{i,1,1}+x_{i,1,2}+\cdots+x_{i,1,n})(x_{i,2,1}+x_{i,2,2}+\cdots+x_{i,2,n})\cdots(x_{i,F,1}+x_{i,F,2}+\cdots+x_{i,F,n})\)

\[E=\Pi_{i=1}^L f(i) \]

那這個式子的意義是什麼呢?原來是給每個值選 \(1\) 個位置,而現在就是給每個值選 \(F\)

個位置。對於一個值來說,選取的位置可以重複,而兩個不同的值所選取的位置必須兩兩不同,且一個方案的權值為 \((\frac1K)^t\)\(t\) 為一共選擇的不同的位置數。


先考慮只選擇一個值,設 \(f_{i,j}\) 為選了 \(i\) 個位置,其中有 \(j\) 個不同的位置。則有:

\[f_{i,j}=f_{i-1,j-1}+f_{i-1,j}\cdot j \]

即當前可以新選一個位置,或者選擇選過的 \(j\) 種位置中的一個。那麼對於一個權值來說,選出 \(x\) 個不同的位置的方案為 \(f_{F,x}\)


擴充套件到選擇 \(L\) 個值。容易發現 \(f_{i,j}\)

與當前考慮哪個值無關,所以可以用生成函式。

\(f(x)=\sum f_{F,x}x^i\),那麼答案的生成函式就是 \(f^n(x)\)。然後還要乘上分配位置的方案數 \(\binom ntt!\)。所以答案為:

\[ans=\sum_{t=1}^{L*F}\binom ntt!(\frac 1K)^t[x^t]f^n(x) \]

注意到其中有一個係數為 \(t!\),而 \(t\geq2003\) 時,\(t!\equiv 0\ (mod\ 2003)\)。所以實際上只需要保留 \(f^n(x)\) 的前 \(2003\) 項,可以不用 FFT

複雜度 \(O(F^2+mod^2logn)\)