Cunning Gena 题解
简要题意
有 \(n\) 个人,有 \(m\) 道题目,可以花费 \(b\) 元买一台显示器。现在可以让一些人给你打工,第 \(i\) 个人打工要 \(x_i\) 的工资还有 \(k_i\) 台显示器(第 \(i\) 个人用的显示器,其他人也可以用),让他打工能完成 \(s_i\) 这个题目集合,问完成所有题目最少花多少钱。
思路
记 \(x_i\) 表示第 \(i\) 个人的花费,\(s_i\) 表示第 \(i\) 个人做题集合,\(k_i\) 表示第 \(i\) 个人需要的显示器。
\(m \le 20\) 且不是计数,考虑 dp
,发现确实可以做。
可以设 \(f_i\) 表示做题集合为 \(i\) 时最小花费。
易得状态转移:
\[f_{i\cup s_i} = \min\{f_j +x _i + t \times b\}
\]
\(t\) 表示需要新买的显示器。特别的,不需要购买时 \(t = 0\)
但是直接这样做显然不对,因为对于 \(x_i + k _ i \times b = x_j +k_j \times b\) 时,可能会选择 \(k_i\) 更小的那个人导致之后需要的显示器费用增加,那么就要再将 \(k\) 从大到小排序,因为这样能让后面花费在显示器上的钱尽量小。