Cry_For_theMoon  

模拟题,复读一下 EI 老师的 营业日志

题意:给出 \(n,m,u,v\),试计算:

\[[x^n]\prod_{i=1}^{m}\frac{1}{1-(ui+v)x}\bmod 998244353 \]

其中 \(n\le 10^{18},m\le 5\times 10^5\)

直接分治 NTT 算出分式,再套 bostan-mori 的话复杂度是 \(O(m\log m\log n)\) 的,难以通过。

考虑使用部分分式展开:也就是将原式写为:

\[\sum_{i=1}^{m}\frac{r_i}{1-(ui+v)x} \]

的形式。

我们有比较机械的部分分式方法:

现在我们要对

\[\frac{P(x)}{Q(x)=\prod_{i=1}^{r}(1-a_ix)^{k_i}} \]

部分分式。首先我们知道其等于:

\[\sum_{i=1}^{r}\frac{R_i(x)}{(1-a_ix)^{k_i}} \]

其中 \(\deg R_i(x)\lt k_i\)。如果我们已经求得了这个形式,则计算某一项 \([x^t]\) 的值是容易的,即为:

\[\sum_{i=1}^{r}\sum_{j\le \deg R_i(x)}[x^{j}]R_i(x)\times a_i^{t-j}\dbinom{k_i+t-j-1}{t-j} \]

现在考虑如何去求。

\(q_i(x)=(1-a_ix)^{k_i}\),也就是说 \(Q(x)=\prod_{i=1}^{r}q_i(x)\),注意到 \(q_i(x)\) 是两两互质的。

如果暴力通分,则得到:

\[P(x)=\sum_{i=1}^{r}\frac{R_i(x)Q(x)}{q_i(x)} \]

而注意到:

\[P(x)\equiv \frac{R_i(x)Q(x)}{q_i(x)}\bmod q_i(x) \]

因此:

\[R_i(x) = P(x)\times(\frac{Q(x)}{q_i(x)}\bmod q_i(x))^{-1}\bmod q_i(x) \]

一般我们都会用到的是比较特殊的情况,例如本题。\(R_i\) 成为了常数。

首先 \(P(x)=1\),其次 \(q_i(x)=1-(ui+v)x\),这是一个一次多项式。

而多项式 \(F(x)\)\((ax+b)\) 取模等价于代入它的根,也就是等价于求值 \(F(-\frac{b}{a})\)

因此令 \(Q_i(x) = \prod_{j\neq i}\frac{1}{q_j(x)}\),则 \(R_i=Q_i(\frac{1}{ui+v})\)

不妨来求 \(Q_i^{-1}(x)=\prod_{j\neq i}q_j(x)\),也就是:\(\prod_{j\neq i}[1-\frac{uj+v}{ui+v}]\)

注意到其也就是:\(\prod_{j\neq i}\frac{u(i-j)}{ui+v}\)。因此算一项 \(R_i\) 可以 \(O(\log)\) 取之。

然后整个题得到了解决。

代数手段的解决方法比较机械,但是没有这样的数学功底,该怎么办?

我们还有一个组合意义来解决这道题目,这个组合意义十分巧妙:

首先可以看成这样一个问题。我们有 \(n\) 个阶段,要从 \(n\) 个阶段里选出共 \(m\) 个数。初始你有 \(u+v\) 个数可选,每进入到下一个阶段,你就多出 \(v\) 个数可选。

我们随意考虑一个最终选出来的方案,发现难点在于无法有效的区分在哪一个数开始进入了下一阶段:如果我们直接认为第一天的 \(u+v\) 个数和第二天的 \(u+2v\) 个数全部相同固然可以区分,但是完全没有办法计算。

考虑这样一个事情:每次进入一个新的阶段的时候多了 \(v\) 个数可选。我们直接在这个时候,插入 \(v\) 个数之一,标识着进入了新阶段。这样我们的序列长度应该为 \(n+m-1\)

然后说,每一个长度为 \(n+m-1\) 的新序列,就能唯一地对应回去一个旧方案。但是一个旧方案对应过来有 \(v^{m-1}\) 种方式。所以要除掉哦。

发现我们依旧无法计数:因为你要保证什么,第一次新增的 \(v\) 个人,出现在第二次新增的 \(v\) 个人之前,这样的事情。

我们忽略这样的限制,也即忽略阶段的顺序:就是说,有 \(m-1\) 组新增的数,每组各有 \(v\) 个。本来我们钦定了第一组的第一次出现位于第二组的第一次出现之前,现在我们删去这样的约束。最后根据对称性除掉 \((m-1)!\) 即可。

现在就可以计数了:相当于有 \(m\) 个组,第一组有 \((u+v)\) 个数字,以后的组都是 \(v\) 个数字。然后你要求 \(m\) 个组一共凑出来 \(n\) 个数字,这里是 egf 卷积的形式,然后要求第 \(2\sim m\) 组每组的数字都至少出现一次,这里直接容斥掉即可。

小练习:ABC241H Card Deck Score

\(2^n\) 容斥的部分是平凡的,然后变为计算:

\[[x^{m}]\prod_{i=1}^{n}\frac{1}{1-a_ix} \]

相信大家现在都会 \(O(n^2+n\log m)\) 计算这个了。

注意到 \(R_i\) 可以预处理出来,所以更严格的复杂度是 \(O(n^2+n2^n\log m)\)。不过也不需要这个优化。

就这?

代码

posted on 2024-01-15 19:33  Cry_For_theMoon  阅读(89)  评论(2编辑  收藏  举报