CSP2025 T4 employ

\(f_{i,j,k}\) 是前 \(i\) 位,当前有 \(j\) 个人寄了,有 \(k\)\(x\) 满足 \(1 \le x \le i \land c_x \le j\),只考虑所有 \(c \le j\)​ 的人的排列的方案数。

\(t_i\)\(c_x = i\)\(x\) 的个数,\(s\)\(t\) 的前缀和。

直接转移,\(c\)\(j\) 变大的时候枚举的要填在前面的 \(c_x = j+1\) 的个数。

  • \(s_i = 1\)

    • \(>j\) 的数:\(f_{i+1,j,k} \leftarrow f_{i,j,k}\)
    • \(\le j\) 的数:\(f_{i+1,j+1,k+c+1} \leftarrow f_{i,j,k}\binom{i-k}{c}\binom{t_{j+1}}{c}c!({s_j}-k)\)
  • \(s_i = 0\)

    • \(\le j\) 的数:\(f_{i+1,j+1,k+c+1} \leftarrow f_{i,j,k}\binom{i-k}{c}\binom{t_{j+1}}{c}c!({s_j}-k)\)
    • \(j+1\)\(f_{i+1,j+1,k+c} \leftarrow f_{i,j,k}\binom{i-k}{c-1}\binom{t_{j+1}}{c}c!\)
    • \(> j\) 的数:\(f_{i+1,j+1,k+c} \leftarrow f_{i,j,k}\binom{i-k}{c}\binom{t_{j+1}}{c}c!\)

答案就是 \(\sum\limits_{i=0}^{n-m}{f_{n,i,s_i}(n-s_i)!}\)

一层里面所有 \(c\) 之和是 \(O(n)\) 的,因此总时间复杂度是 \(O(n^3)\)

posted @ 2025-11-10 19:55  KIreteria  阅读(9)  评论(0)    收藏  举报