第一眼看,显然是个背包。
但是做题太少抽象不出经典模型……
值得注意的是,一份食物可以被拆成几份分批次运输,达到永远亭后再组装起来。
所以在选车的时候,只要总空间不小于你想装的总体积就可以装。
考虑把问题分成两部分,先求出总大小,再求出总费用。
具体地说: 1. 在总美味度不小于 p 的情况下,最小化总体积。 2. 在总空间不小于总体积的情况下,最小化总费用。
发现两步都可以转化为多重背包,用二进制或者单调队列套路一下就完了。
(其实我 DP 学的少都不会多重背包,刚学二进制套路)
于是又有一个问题:第二步的总体积最大是 200×100×100=2×106,无法作为状态表示。
考虑把状态改成答案即总费用。
另外,此题卡常,吸氧大法好。
代码:
1 |
|