员工招聘 CSP-S 2025

[CSP-S 2025] 员工招聘

切掉了 /cy

题目链接: [CSP-S 2025] 员工招聘 。

题目描述:

有 nn 个数,第 ii 个数为 cic_i 。还有一个长度为 nn 的 0101 串 ss 。

一个长度为 nn 的排列 pp 合法当且仅当:

  • 依次考虑 i=1,2,⋯ ,ni=1,2,\cdots,n 并初始化计数器 C=0C=0。
  • 若 cpi≤Cc_{p_i}\le C 或 si=0s_i=0 ,则 C+1→CC+1\to C 。
  • 若最终 C≤n−mC\le n-m ,则排列 pp 合法。

求有多少种合法的排列 pp ,对 998244353998244353 取模。

n≤500n\le 500 。

定义 fi,j,kf_{i,j,k} 为考虑 ss 的前 ii 个字符,有 jj 个数使得 C+1→CC+1\to C ,有 kk 个数满足他们的 cc 比 jj 大且不考虑这些数具体是什么的合法排列数。

设 cntjcnt_j 表示 ci=jc_i=j 的 ii 的个数, sumjsum_j 为 cntjcnt_j 的前缀和。

不妨分类讨论一下。

Case #1: si=0s_i=0

这种情况下必然有 C+1→CC+1\to C 。即 jj 必定会增大 11 。

由于 jj 变为 j+1j+1 ,所以 kk 的含义变为了 cc 大于 j+1j+1 的数,所以要把恰好等于 j+1j+1 的数的排列贡献加入。

设有 ll 个数字满足他们的 cc 恰好为 j+1j+1 ,则共有 (cntj+1l)(kl)l!\displaystyle\binom{cnt_{j+1}}{l}\binom{k}{l}l! 种方案。其中 (cntj+1l)\displaystyle\binom{cnt_{j+1}}{l} 的含义是从恰好满足 cc 为 j+1j+1 的数中选择 ll 个; (kl)l!\displaystyle\binom{k}{l}l! 表示从原来没有确定具体内容的 kk 个位置(因为其他 i−ki-k 个位置已经确定了)选择有顺序的 ll 个。

则我们可以分类讨论:

Case #1.1

若 i+1i+1 的数 pp 满足 cp≤j+1c_p\le j+1 ,则有:

(sumj+1−(i−(k−l)))(cntj+1l)(kl)l!fi,j,k→fi+1,j+1,k−l(sum_{j+1}-(i-(k-l)))\binom{cnt_{j+1}}{l}\binom{k}{l}l!f_{i,j,k}\to f_{i+1,j+1,k-l}

Case #1.2

若 i+1i+1 的数不满足 Case #1.1 ,则:

(cntj+1l)(kl)l!fi,j,k→fi+1,j+1,k−l+1\binom{cnt_{j+1}}{l}\binom{k}{l}l!f_{i,j,k}\to f_{i+1,j+1,k-l+1}

Case #2: si=1s_i=1

同样的,分类讨论。

Case #2.1

若 i+1i+1 的数 pp 满足 cp≤jc_p\le j ,则有:

(sumj−(i−k))(cntj+1l)(kl)l!fi,j,k→fi+1,j+1,k−l(sum_j-(i-k))\binom{cnt_{j+1}}{l}\binom{k}{l}l!f_{i,j,k}\to f_{i+1,j+1,k-l}

Case #2.2

若 i+1i+1 的数不满足 Case #2.2 ,则有:

fi,j,k→fi+1,j,k+1f_{i,j,k}\to f_{i+1,j,k+1}

然后就没了,模拟就行。