贪心与动态规划:Peter的快餐店。
原题:
{Peter最近在R市开了一家快餐店,为了招揽顾客,该快餐店准备推出一种套餐,该套餐由A个汉堡,B个薯条和C个饮料组成。价格便宜。为了提高产量,Peter从著名的麦当劳公司引进了N条生产线。所有的生产线都可以生产汉堡,薯条和饮料,由于每条生产线每天所能提供的生产时间是有限的、不同的,而汉堡,薯条和饮料的单位生产时间又不同。这使得Peter很为难,不知道如何安排生产才能使一天中生产的套餐产量最大。请你编一程序,计算一天中套餐的最大生产量。为简单起见,假设汉堡、薯条和饮料的日产量不超过100个。}
假设用P1,P2,P3分别表示汉堡,薯条和饮料的单位生产时间,用t[i]表示每天的生产时间,用P[i,j,k]表示在前i条生产线内,生产j个汉堡,k个薯条的情况下,最多能生产的饮料数。则P[i,j,k]=max{p[i-1,j,k]+r[i,j-j1,k-k1]},最后求得时间复杂度为十的九次方。所以可得单纯的动态规划是无法完成的。则加入贪心思想,题目当中限定了汉堡饮料等个数不超过一百,则套餐的上限已经限定。在这种情况下,在运行动态规划以前,可以求得最大的套餐数量,限定动态规划的搜索范围。则可以得到更快速的解法。
贪心和搜索:乘车路线
有N个城市用若干的道路相连,每条路上有两个参数,即长度和费用。BOB准备从1到N城市,但是只有W的钱,求在可支付范围下的最短路线。这道题用深搜去搜,在优化的时候,可以预处理一下。算出在I~N不考虑费用的情况下的道最短路径,以及I~N在不考虑路程的情况下的最小费用。设在城市i,已经走过的路程为L,用的费用为W,如果L+minL[i]>=已经找到的最短路径长度,或者W+minw[i]>最大可承受费用,即可进行剪枝,从而进行优化。
NOIP中和图论相关的也就是最小生成树和最短路径的问题。这个例子拿出来的目的是,作为搜索的剪枝的一种手段,也用的是贪心的思想。所以说更多的贪心用在和别的算法进行的结合。贪心的通常用法是给一个界,在这个界里面进行解题。