直接做显然不太好做,考虑转化成每次都从 \(n\) 个怪中随机挑一个出来打,但是只有挑到还有血量的怪才算入“打了一次”。
使用生成函数来刻画这个东西:当打了一次,乘上一个 \(y\),打了有效的一次,乘上一个 \(x\)。枚举最后一次有效攻击打到了哪个身上,则每个怪的 EGF 就是
\[x^{a}e^{\frac{y}{n}}+\sum\limits_{0\leq j<a}{\frac{(x^i-x^a)y^i}{n^ii!}} \]直接把所有生成函数用个 DP 卷出来,这部分复杂度是 \(O(n^3a^3)\) 的。
现在我们需要计算某个 \(x^ay^be^{k\frac{y}{n}}\) 的系数,将其贡献到攻击了 \(a+1\) 次的答案中。将 \(e\) 展开,我们要求的东西实际上长这样:
\[\sum\limits_{i\geq 0} (\frac{k}{n})^i (i+b)^{\underline{b}} \]发现只和 \(k,b\) 有关,不妨确定 \(k\),记 \(f(b)\) 表示 \(b\) 的系数,则将 \(i=0\) 的情况提取出来,有
\[f(b)=b!+\frac{k}{n}\sum\limits_{i\geq 0} (\frac{k}{n})^i (i+b+1)^{\underline{b}} \]注意到 \((i+b+1)^{\underline{b}}\) 实际上是可以展开的,其可以展开成 \(\sum\limits_{j=0}^{b}(i+j)^{\underline{b-j}}\),展开以后将 \(f(b)\) 移项到左边,整理为
\[\frac{n-k}{n} f(x)=b!+\frac{k}{n}\sum\limits_{0\leq j<x} f(j)b^{\underline{b-j}} \]就可以 \(O(n^2a^2)\) 对于某个固定的 \(k\) 递推出系数。瓶颈还是在于前面的背包。
标签:系数,frac,limits,sum,underline,Rivals,9317,展开,QOJ From: https://www.cnblogs.com/275307894a/p/18516491