码迷,mamicode.com
首页 > 其他好文 > 详细

快餐问题(dp好题)

时间:2014-08-06 01:20:20      阅读:367      评论:0      收藏:0      [点我收藏+]

标签:数据   问题   时间   程序   不同的   dp   简单   如何   

Peter最近在R市开了一家快餐店,为了招揽顾客,该快餐店准备推出一种套餐,该套餐由A个 汉堡,B个薯条和C个饮料组成。价格便宜。为了提高产量,Peter从著名的麦当劳公司引进了N条 生产线。所有的生产线都可以生产汉堡,薯条和饮料,由于每条生产线每天所能提供的生产时间是有 限的、不同的,而汉堡,薯条和饮料的单位生产时间又不同。这使得Peter很为难,不知道如何安排 生产才能使一天中生产的套餐产量最大。请你编一程序,计算一天中套餐的最大生产量。为简单起见, 假设汉堡、薯条和饮料的日产量不超过100个。N<=10

 

动态规划不难,F[i][j][k]表示前i条生产线,生产了j个汉堡,k个薯条,最多还能生产多少饮料。裸的动态规划复杂度是O(N*100^4),极限数据还是要挂,能过7个点。需要加贪心优化。。首先“汉堡、薯条和饮料的日产量不超过100个”,那么答案必定不会超过max= min{100/A,100/B,100/C}。因此如果dp过程中得到了一个大于等于max的解,那么直接输出max,退出。还有一开始如果每条生产线的时间全用来生产全套的,这样加起来已经比max大了,那么不需要dp直接输出max。

还有一个不怎么靠谱的贪心,非常靠运气,就是 如果一条生产线的时间够生产全套的,那么让它生产一些全套的,但不要全部生产全套(试验证明全部WA),比如它能生产5套全套的,那就让它生产2套,剩下的时间拿来dp。。把握的好的话可以AC,并且时间很快。

快餐问题(dp好题),布布扣,bubuko.com

快餐问题(dp好题)

标签:数据   问题   时间   程序   不同的   dp   简单   如何   

原文地址:http://www.cnblogs.com/vb4896/p/3893306.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!