P11616 瓦解

Posted on 2025-04-18 23:17  K_J_M  阅读(10)  评论(0)    收藏  举报

题目描述

你手上有一个长为 \(n\) 的数列 \(a\)。小 Q 想让你将其分成不超过 \(m\)非空连续段,且每段内数字严格单调递增。现在小 Q 想知道一共有几种划分方案。由于方案数可能很大,你只需要告诉她方案数对 \(998244353\) 取模的结果。

Solution

由于我们的数列是需要严格单调递增的,而且需要非空,那么对于下降的一段,我们不得不将他们单独分成一段。比如,\(\{1,2,3,5,10,4,6,8,7,6,10\}\),我们就需要将它分成 \(\{1,2,3,5,10\},\{4,6,8\},\{7\},\{6,10\}\) 这四段。原本我们有 \(10\) 个可供选择划分位置,现在由于某些地方不得不划分导致我们的划分位置只剩下 \(10-3=7\) 个。假设我们有 \(k\) 个不得不划分的地方,那么此时剩下 \(n-k-1\) 个剩余划分位置,还需划分为 \(m-k-1\) 段。

现在问题转化为从 \(n-k-1\) 个物品中选出不超过 \(m-k-1\) 个的方案数。使用排列组合,我们的答案应该是

\[\sum_{i=0}^{m-k-1}C_{n-k-1}^{i} \]

我们可以先预处理出 \(10^7\) 以内的阶乘和逆元,如果不会线性求逆元,可以移步我的 Blog
Ac Code