把博客园图标替换成自己的图标
把博客园图标替换成自己的图标end

QOJ #9317. Rivals

题面传送门

直接做显然不太好做,考虑转化成每次都从 \(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\) 递推出系数。瓶颈还是在于前面的背包。

submission

posted @ 2024-10-30 19:51  275307894a  阅读(27)  评论(0编辑  收藏  举报
浏览器标题切换
浏览器标题切换end