usaco4.1.2 有N块长木板,希望得到M块短木板,问最多可以裁多少块短木板

这道题目要求用N块长木板切割出最多M块特定长度的短木板。尝试了贪心和动态规划未果,最终采用搜索策略并加入多种剪枝技巧解决。关键点包括枚举短木板数量、优先考虑最短的短木板、按长度降序裁剪长木板、关注数量而非具体木板、整数倍裁剪优化及限制浪费长度的剪枝策略。
摘要由CSDN通过智能技术生成

        题意:给出N块长木板的长度,现在需要M块短木板,每块短木板的长度也给出,问最多可以裁多少块所需的短木板?

        分析:刚开始想贪心,DP什么的未果,就只能搜索了。想了很多种方法,很多剪枝。终于把它给过了

                  (1)枚举得到短木板的块数比暴搜要快很多,因为找到了一种情况就可以直接退出

                  (2)最后得到的短木板,一定是所需短木板中最短的那几块         

                  (3)对于每个长木板来说,裁的短木板从长到短试要好些

                  (4)对于每个长木板,裁同一长度的短木板时,只关心数量,具体哪一块是无关紧要的

                  (5)如果现在长木板正好能裁成当前短木板的整数倍,那么就直接裁了,不用试裁更短的短木板了

                  (6)最关键的剪枝:对于每种情况都有可以浪费的最大长度,如果到目前为止浪费的比它还多的话,后面就没有搜的必要了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值