这场模拟赛真是太幽默了哈哈哈
Stage 1
不难注意到 \(f_n=\dfrac{1}{\binom{n+m}{m}}\)。
但是上述做法细节太多,尤其容易将 \(\binom{n+m}{m}\) 写成 \(\binom{n+m}{n}\) 导致 TLE 挂分。
所以我们应当参考题解学习高级做法。
首先不难发现, 记 \(g_{i}=\dfrac{f_{i}}{m}\), 那么
\[\left\{\begin{array}{c} g_{0}=0 \tag{3}\\ g_{i}=\frac{i}{m+i} g_{i-1}+\frac{1}{m+i} \quad(i \geq 1) \end{array}\right. \]求出 \(g_{n}\) 即可。
把下面的式子换个形式:
\[\begin{equation*} (m+i) g_{i}=i g_{i-1}+1 \tag{4} \end{equation*} \]设
\[\begin{equation*} y=\sum_{i \geq 0} g_{i} x^{i}=\sum_{i \geq 1} g_{i} x^{i} \tag{5} \end{equation*} \]那么:
\[\begin{gather*} \sum_{i \geq 1}(m+i) g_{i} x^{i}=\sum_{i \geq 1}\left(i g_{i-1}+1\right) x^{i} \\ m y+x \sum_{i \geq 1} i g_{i} x^{i-1}=\sum_{i \geq 1} x^{i}+x^{2} \sum_{i \geq 1}(i-1) g_{i-1} x^{i-2}+x >\sum_{i \geq 1} g_{i-1} x^{i-1} \tag{6}\\ m y+x y^{\prime}=\frac{x}{1-x}+x^{2} y^{\prime}+x y \end{gather*} \]整理:
\[\begin{equation*} y^{\prime}+\frac{m-x}{x-x^{2}} y=\frac{1}{(1-x)^{2}} \tag{7} \end{equation*} \]发现这是一阶线性微分方程的形式。
记 \(P(x)=\frac{m-x}{x-x^{2}}, Q(x)=\frac{1}{(1-x)^{2}}\) 。
那么根据常数变易法, 有:
\[\begin{equation*} y=\exp \left(-\int P(x) d x\right) \cdot \int Q(x) \exp \left(\int P(x) d x\right) d x \tag{8} \end{equation*} \]\(P(x)\) 是有理函数:
\[\begin{equation*} \int P(x) d x=\int\left(\frac{m}{x}+\frac{m-1}{1-x}\right) d x=m \ln x-(m-1) \ln (1-x)+C_{1} \tag{9} \end{equation*} \]这里认为 \(x \in(0,1)\) 。
\[\begin{gather*} \exp \left(\int P(x) d x\right)=C_{1} x^{m}(1-x)^{1-m} \\ \int Q(x) \exp \left(\int P(x) d x\right) d x=\int \frac{1}{(1-x)^{2}} \cdot C_{1} x^{m}(1-x)^{1-m} d x >\tag{10}\\ =C_{1} \int x^{m}(1-x)^{-m-1} d x \end{gather*} \]用级数积分(事实上, 原微分方程是非初等的)
根据牛顿二项式定理,有:
\[x^{m}(1-x)^{-m-1}=\sum_{i \geq 0}\left(\begin{array}{c} m+i \tag{11}\\ m \end{array}\right) x^{m+i} \]那么
\[\begin{gather*} \int Q(x) \exp \left(\int P(x) d x\right) d x=C_{1} \int x^{m}(1-x)^{-m-1} \\ =C_{1}\left(C_{2}+\sum_{i \geq 0}\left(\begin{array}{c} m+i \\ i \end{array}\right) \frac{x^{m+i+1}}{m+i+1}\right) \tag{12}\\ =C_{1}+C_{2} \sum_{i \geq 0}\left(\begin{array}{c} m+i \\ i \end{array}\right) \frac{x^{m+i+1}}{m+i+1} \end{gather*} \]所以
\[\begin{array}{r} y=C_{3}(1-x)^{m-1} x^{-m}\left(C_{1}+C_{2} \sum_{i \geq 0}\left(\begin{array}{c} m+i \\ i \end{array}\right) \frac{x^{m+i+1}}{m+i+1}\right) \tag{13}\\ =C_{3}(1-x)^{m-1} x^{-m}+C_{2}(1-x)^{m-1} \sum_{i \geq 0}\left(\begin{array}{c} m+i \\ i \end{array}\right) \frac{x^{i+1}}{m+i+1} \end{array} \]为了适合初始条件 \(\left.y\right|_{x=0}=0,\left[x^{1}\right] y=\frac{1}{m+1}, C_{3}=0, C_{2}=1\) 。
那么:
\[\begin{gather*} y=(1-x)^{m-1} \sum_{i \geq 0}\left(\begin{array}{c} m+i \\ i \end{array}\right) \frac{x^{i+1}}{i+m+1} \\ =\sum_{j}(-1)^{j}\left(\begin{array}{c} m-1 \\ j \end{array}\right) \sum_{i \geq 0}\left(\begin{array}{c} m+i \\ i \end{array}\right) \frac{x^{i+j+1}}{i+m+1} \tag{14}\\ =\sum_{n} x^{n} \sum_{j}\left(\begin{array}{c} m-1 \\ j \end{array}\right)\left(\begin{array}{c} n+m-j-1 \\ m \end{array}\right) \frac{(-1)^{j}}{n+m-j} \end{gather*} \]所以
\[g_{n}=\sum_{j}\left(\begin{array}{c} m-1 \tag{15}\\ j \end{array}\right)\left(\begin{array}{c} n+m-j-1 \\ m \end{array}\right) \frac{(-1)^{j}}{n+m-j} \]\(O(m \log m)\) 计算即可。时间复杂度 \(O(T m \log m)\) 。
看这个形式不知道有没有组合意义的理解。
真是太巧妙了!!!虽然比我原来做法复杂度劣一点,但是真是简单太多了。
Stage 2
T2。只会 \(O(n^2k)\) 怎么办?什么?你说 \(n\le2000,k\le10\)?肯定是数据问题有问题,还是看题解吧!
题解
直接做非常难做, 但你不难发现, 长度为 \(n\) 的序列, 可以理解为 \(n+2\) 个点的树对应的 prufer 序列!
进一步, prufer 序列出现次数加 1 就是树上对应的点的度数。
又由于只有 \(n+1\) 个值, 因此等于钦定标号为 \(n+2\) 的点度数为 1 。那我们不妨将它作为根。
然后就可以动态规划了。
\(f_{x}\) 表示大小为 \(x\) 的有根树的方案数。
\(g_{d, x}\) 表示 \(d\) 个有根树, 且大小总和为 \(x\) 的方案数。
转移是简单的:
\(f_{x}=\sum_{d=1}^{k} g_{d, x-1} \times x\)
\(g_{d, x}=\sum_{y=1}^{x} g_{d-1, x-y} \times f_{y} \times\left(\begin{array}{l}x-1 \\ y-1\end{array}\right)\)
对于 \(n\), 答案就是 \(f_{n+1}\) 。
组题人注:
可以做到更优的复杂度。这是供题人的原文:
利用全在线卷积优化,可以很轻松做到 \(O\left(n k \log ^{2} n\right)\) 。
生成函数(指多项式求逆)下,复杂度 \(O(n k \log n)\) 。
但是由于写 std 的人不知道如何多项式求逆优化到 \(O(n k \log n)\), 而全在线卷积套上去意义不大, 所以就成了 \(O\left(n^{2} k\right)\) 。
真是太巧妙了,这么难做的提为什么想不到图论!鞭策自己!
Conclusion
pig 给 dash 开门——抽象到机房了!
标签:begin,挂分,right,end,sum,不谈,抛开,array,left From: https://www.cnblogs.com/yinhee/p/18027310