ABC221H Count Multiset

传送门

构造序列型 DP。经典的就是这么一种构造序列的方式:

用两种操作。

  1. 增加一个 \(0\)

  2. 将当前序列中所有数加 \(1\)

由此可以构造出任意一种自然数不降序列。

回到本题。即要求构造一个长度 \(k\) 和为 \(n\) 且没有一种数出现超过 \(m\) 次的不降序列,求方案数。考虑用上面提到的方法构造。

\(dp[i][j]\) 表示当前序列中有 \(i\) 个数,和为 \(j\) 的方案数。

但我们还要限制 \(0\) 的出现次数,用额外数组 \(f[i][j]\) 表示有 \(i\) 个数,和为 \(j\) 且不含有 \(0\) 的方案数。

\[dp[i][j]=dp[i][j-i]+\sum_{x=1}^mf[i-x][j] \]

\[f[i][j]=dp[i][j-i] \]

posted @ 2024-04-02 20:10  FLY_lai  阅读(4)  评论(0编辑  收藏  举报