P6359(绿,DP)
题意
有 \(n\) 台计算机,每台由三元组 \((c_i, f_i, v_i)\) 描述,分别表示核心数、时钟频率、购买价格。
有 \(m\) 个客户订单,每个订单由三元组 \((C_j, F_j, V_j)\) 描述,分别表示所需核心数、最低频率要求、支付金额。
你需要选择购买一部分计算机,并接受一部分订单,使得:
- 每个被接受的订单 \(j\),都能被分配恰好 \(C_j\) 个核心,这些核心来自已购买的计算机,且每个核心的频率 \(\ge F_j\);
- 同一核心不能分配给多个订单;
- 利润 = 所有被接受订单的 \(V_j\) 之和 - 所有被购买计算机的 \(v_i\) 之和 最大化。
输出最大利润。
思路
自己一点想不出来,其实就是先按照频率从大到小排序,然后把计算机和客户放到一起做01DP
。这样就可以保证跑到客户时频率需求一定是满足的。
然后频率相同时,遵循“先买后卖”的原则排序就好。
然后?就没有然后了。