#P2329. 栅栏(Fence Rails)

0
    ID: 8429 传统题 1000ms 128MiB 尝试: 0 已通过: 0 难度: (无) 上传者: 标签>P2329剪枝深度优先搜索二分答案CSP-S

栅栏(Fence Rails)

栅栏(Fence Rails)

题目描述

农夫约翰打算建立一个栅栏将他的牧场给围起来,因此他需要一些特定规格的木材。于是农夫约翰到木材店购买木材。可是木材店老板说他这里只剩下少部分大规格的木板了。不过约翰可以购买这些木板,然后切割成他所需要的规格。而且约翰有一把神奇的锯子,用它来锯木板,不会产生任何损失,也就是说长度为 1010 的木板可以切成长度为 88 和 22 的两个木板。

你的任务:给你约翰所需要的木板的规格,还有木材店老板能够给出的木材的规格,求约翰最多能够得到多少他所需要的木板。

输入格式

第一行为整数 m(m≤50)m(m\leq50) 表示木材店老板可以提供多少块木材给约翰。紧跟着 mm 行为老板提供的每一块木板的长度。

接下来一行(即第 m+2m+2 行)为整数 n(n≤1000)n(n\leq1000),表示约翰需要多少木材。

接下来 nn 行表示他所需要的每一块木板的长度。木材的规格小于 3276732767。(对于店老板提供的和约翰需要的每块木板,你只能使用一次)。

输出格式

只有一行,为约翰最多能够得到的符合条件的木板的个数。

样例输入 #1

4
30
40
50
25
10
15
16
17
18
19
20
21
25
24
30

样例输出 #1

7

样例输入 #2

3
20
10
10
9
3
3
3
5
5
7
8
8
9

样例输出 #2

7

数据范围

对于 100%100\% 的数据,1≤m≤501 \le m \le 50,1≤n≤10001 \le n \le 1000,所有木材规格为不超过 3276732767 的正整数。

知识点与难度

本题涉及的知识点从属于 CSP-S,难度(CF Rating):1900。


测试点分布

Subtask 分值 测试点编号 说明
0 10 1~2 样例
1 20 3~8 小规模 m≤5,n≤15 / 特殊: 一块大木板切全部 / 特殊: 所需规格全部相等
2 15 9~11 Hack: 所有原料均小于最小需求输出0 / Hack: 废料碎片不可拼接致总和虚高 / Hack: 恰好零废料满切
3 30 12~20 中规模 m≤25,n≤300 / 大规模 m=50,n=1000 二分+废料剪枝压力
4 25 21~25 随机 m≤50,n≤1000 回归

出处:原题链接