YC256B [ 20240312 CQYC省选模拟赛 T2 ] count

题意

对于一个长度为 \(n\) 的排列 \(P\)

你需要求出所有满足条件的长度为 \(k\) 的数列 \(A\) 的个数。

  • \(A\) 单调不减且 \(1 \le A_i \le n\)
  • \(\min_{j = 1} ^ {A_1} P_j = \min_{j - 1} ^ {A_i} P_j\)

求出对于 \(P_1 = x\) 的所有排列的满足条件的 \(A\) 的个数。

Sol

\(m = \min_{i = 1} ^ {A_1} P_i\)

不难发现 \(m\) 满足 \(m \le x\),对于所有的 \(A_i\) 满足 \(A_i \ge m\)

考虑 \(1, 2, \ldots, m - 1\) 的位置,这些必须 \(\ge A_k\)

集中注意力,对于一个排列,需要满足一系列位置关系。

考虑将这些限制用 差分 表示出来。

具体地,考虑 \(d_1 = idx_m - idx_x\)\(idx\) 表示下标)。

\(d_2 = idx_{A_1} - idx_m\)\(d_3 = idx_{A_2} - idx_{A_1}\)

\(\forall i, 3 \le i \le k + 1, d_i = idx_{A_{i - 1}} - idx_{A_{i - 2}}\)

感觉这样的形式很优美,\(d\)\(A\) 一一对应。

类似地,我们考虑使用 \(d_{k + 2} \to d_{k + m}\) 表示 \(1, 2, \ldots, m - 1\)

不难发现,答案就是 \(d\) 的方案数。

考虑 \(d_i\) 需要满足哪些限制:\(\sum d_i \le n - 1, d_1, d_{k + 2}, \ldots d_{k + m} > 0\) 即可。

枚举 \(\sum d_i\) 太麻烦了!

直接把 \(n - \sum d_i\) 当成 \(d_{k + m + 1}\) 就行!

隔板法即可。

答案即为

\[\dbinom{n + k - 1}{i + k + 1} \times (i - 1)! \times (n - i - 1)! \]

复杂度:\(O(n)\)

posted @ 2024-03-12 22:01  cxqghzj  阅读(1)  评论(0编辑  收藏  举报