[模拟赛] Pack
题目描述:
给定一个长度为 \(n\),元素只有 \(1\), \(2\) 元素的序列,你需要将这些元素按顺序装箱,每个箱子的大小为 \(w\),你可以进行一次操作:取出若干个元素将其随意排序放到最后。问最少需要多少个箱子?
解题思路:
一个细微的转化,将取出若干个元素将其随意排序放到最后,转化为选出若干元素,按顺序放入,剩下的元素放到最后做决定。(真的是如转化啊)
考虑 \(\text{dp}\)。
f[i][j] 表示前 \(i\) 个数选 \(j\) 个按顺序填所需要的最少车辆数。
g[i][j] 表示前 \(i\) 个数选 \(j\) 个按顺序填最后一辆车最多能剩下多少空间。
转移显然。
前面的所有元素装好之后,因为剩下的元素我们可以按任意顺序放,所以我们贪心的放,先放 \(2\),放不了了我们再放 \(1\),再继续放 \(2\)......。

浙公网安备 33010602011771号