Skip to content

AT_abc221_h [ABC221H] Count Multiset 笔记

一种对正整数拆分进行 DP 的转移方法

考虑两种操作,放 0 和全部 +1,容易发现每一种拆分都可以通过这两种操作还原。

因此设 fi,j 表示拆分成 i 个数,和为 j 的拆分方案数,边界条件有 fi,0[im]

接着转移:

  • 0fi,jfi1,j
  • +1fi,jfi,ji

问题是不能连续执行超过 m 次放 0 操作。考虑一次执行所有连续的放 0 操作,用辅助数组 gi,j 表示 fi,j 最后一次执行的操作是 +1,这样子放 0 时,fi,jk=imi1gk,j,前缀和优化,状态数 O(n2),转移 O(1),时空复杂度 O(n2)

最近更新