$S$表示一个二进制集合.$S$中第$i$位是$1$表示该集合包含标号是$i$的技能
令$dp[S]$表示要获得集合$S$表示的技能的最小花费.也就是最少需要选多少人
假设技能个数是$n$,那么要求的答案就是$dp[(1 << n)-1]$
对于状态转移方程:
假设当前第$i$个人的技能集合是$now$.我们就拿当前的技能集合
$now$去更新每一个$dp[now|j], 0 <= j < (1 << n)$的值.
因为要记录最后所选的答案.所以拿一个$team$数组维护一下
时间复杂度$O(m*2^n)$.$m$是人的个数,$n$是技能个数
ps:看了mike-meng大佬的题解.所以加了自己的见解
1 |
|