#606. 栅栏的木料 Fence Rails
栅栏的木料 Fence Rails
题目描述
农民John
准备建一个栅栏来围住他的牧场。他已经确定了栅栏的形状,但是他在木料方面有些问题。当地的杂货储存商扔给John
一些木板,而John
必须从这些木板中找出尽可能多所需的木料。
当然,John
可以切木板。因此,一个英尺的木板可以切成一个英尺和一个英尺的木料 (当然也能切成个英尺的,等等)。John
有一把梦幻之锯,因此他在切木料时,不会有木料的损失。
所需要的木料规格都已经给定。你不必切出更多木料,那没有用。
输入格式
- 第行: , 表示提供的木板的数目
- 第到第行: 包括一个整数表示提供的一块木板的长度
- 第行:一个整数表示所需的木板数目
- 第行到第行:包括一个整数表示所需木料的长度。
输出格式
只有一行,一个数字,表示能切出的最多的所需木料的数目。当然,并不是任何时候都能切出所有所需木料。
样例
输入样例
4
30
40
50
25
10
15
16
17
18
19
20
21
25
24
30
输出样例
7
提示
提示(小心地利用它们!)
这是广度多维背包问题,所以我们必须考虑数据。给你的搜索范围有很大的下限,所以我们必须使用深搜加上迭代深化来限制树的边界。然而,直接的迭代深化会变得很慢,所以剪枝是必要的