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}\) 就行!
隔板法即可。
答案即为
复杂度:\(O(n)\)。