Usaco Training Section 6.3 Fence Rails

这篇博客讲述了农民John如何利用给定的木板,通过切割来满足特定长度的栅栏需求。问题涉及木料的最大利用率,使用了搜索和剪枝算法进行优化,包括优先使用大木板、总剩余长度小于最大木板长度时的不可行性以及对相同长度木料的特殊处理。博客提供了输入输出示例,并指出这三个剪枝策略足以解决此问题。
摘要由CSDN通过智能技术生成

Fence Rails 栅栏的木料
农民John 准备建一个栅栏来围住他的牧场.他已经确定了栅栏的形状,但是他在木料方面有些
问题.当地的杂货储存商扔给John 一些木板,而John 必须从这些木板中找出尽可能多所需的木料.
当然,John 可以切木板.因此,一个9 英尺的木板可以切成一个5 英尺和一个4 英尺的木料 (当然也能切成3 个3 英尺的,等等).John 有一把梦幻之锯,因此他在切木料时,不会有木料的损失.
所需要的木料规格都已经给定.你不必切出更多木料,那没有用.
PROGRAM NAME: fence8
INPUT FORMAT
第1 行: N (1 <= N <= 50), 表示提供的木板的数目
第2 行到第N+1 行: N 行,每行包括一个整数,表示各个木板的长度.
第N+2 行: R (1 <= R <= 1023), 所需木料的数目
第N+3 行到第N+R+1 行: R 行,每行一个整数(1 <=Ri <=128),表示所需木料的长度.
SAMPLE INPUT (file fence8.in)
4
30
40
50
25
10
15
16
17
18
19
20
21
25
24
30
OUTPUT FORMAT
只有一行,一个数字,表示能切除的最多的所需木料的树木.当然,并不是任何时候都能切出所
有所需木料.
SAMPLE OUTPUT (file fence8.out)
7

分析:搜索+剪枝

由于答案具有单调性,我们首先二分答案,然后再搜索判断。

显然搜索需要剪枝。

剪枝1:先用大的木板。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值