Solution1 DP

参考

  • 时间复杂度 O(len n minProfit) len 为 group 长度

  • 空间复杂度 O(len n minProfit)

dp[i][j][k] 表示在前 i 个工作中选择了 j 个员工,并且满足工作利润至少为 k 的计划数目。

设 group 数组长度为 n,则最后的结果为

sum(dp[len][j][minProfit] for j in range(n))

对于每个工作 i,在员工为 j 的情况下,有「当前可以开展工作」和「当前无法开展工作」两种情况。

如果当前工作 i 无法开展,则

dp[i][j][k] = dp[i-1][j][k]

如果当前工作 i 可以开展,则(j-group[i]是)

dp[i][j][k] = dp[i-1][j][k] + dp[i-1][j-group[i]][max(0, k-profit[i])]

Last updated