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\) 从大到小排序,因为这样能让后面花费在显示器上的钱尽量小。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!