整数划分——DP

j j j 个数表示 i i i 的方案数,考虑dp

转移考虑最小值是否为1

无限制

  1. 若为1,则转移到 f ( i + 1 , j + 1 ) f(i+1, j+1) f(i+1,j+1)
  2. 不为1,则全部+1,转移到 f ( i + j , j ) f(i+j, j) f(i+j,j)

数之间不能重复

那么相当于每次整体+1

  1. 若为1,转移到 f ( i + j + 1 , j + 1 ) f(i+j+1, j+1) f(i+j+1,j+1)
  2. 不为1,转移到 f ( i + j , j ) f(i+j, j) f(i+j,j)

数的上界有限制

考虑 f ( i , j ) f(i,j) f(i,j) 所有数都合法,我们现在整体+1,那么不合法的数只会变成 n + 1 n+1 n+1

而我们在上面保证数两两不同,所以我们可以直接让 f ( i , j ) − = f ( i − ( n + 1 ) , j − 1 ) f(i,j)-=f(i-(n+1),j-1) f(i,j)=f(i(n+1),j1),相当于钦定一个数为 n + 1 n+1 n+1

题目:https://www.luogu.com.cn/problem/P4104

你可能感兴趣的:(整数划分,dp)