ARC162E Strange Constraints

发布时间 2023-06-28 08:57:23作者: kyEEcccccc

题意

给定长度为 \(n\) 的序列 \(A\),求序列 \(B\) 的个数模 \(998244353\),满足以下条件:

  • 值域 \([1, n]\)
  • \(i\) 的个数不超过 \(A_i\)
  • \(B_i\) 的个数不超过 \(A_i\)

\(1 \le n \le 500\)

题解

发现按照某种顺序去构造是困难的,考虑倒过来,枚举出现次数。如果某个类出现次数为 \(i\),那么:它的数值 \(c\) 满足 \(A_c \ge i\);它的所有 \(i\) 个位置满足 \(A_j \ge i\)。这样的位置总个数可以预处理。那么考虑 DP,记 \(f_{i, j, k}\) 表示大于等于 \(i\) 的已经有 \(j\) 种不同数值,总计 \(k\) 个位置被填满。转移需要枚举一个 \(t\) 表示有多少个出现了 \(i\) 次的数值,似乎是四方?容易发现 \(t, j\) 上界都是 \(\lfloor\dfrac{n}{i}\rfloor\)\(k\) 的下界是 \(ij\)。所以实际复杂度差不多是 \(\Theta(n^2\log^2n)\)