Codevs 1260 快餐问题

Peter在R市新开的快餐店面临生产安排问题。他引入了N条生产线来制作由汉堡、薯条和饮料组成的套餐。每个产品有不同的生产耗时,并且每条生产线的每日工作时间有限。目标是计算出每天能生产的套餐最大数量。给定汉堡、薯条、饮料的生产时间,生产线数量和每条生产线的生产时间,求解最大套餐产量。样例显示在给定条件下,最大套餐产量为10。
摘要由CSDN通过智能技术生成

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

输入描述 Input Description
第一行为三个不超过100的正整数A、B、C,中间以一个空格分开;

第二行为三个不超过100的正整数p1、p2、p3分别为汉堡、薯条和饮料的单位生产耗时。中间以一个空格分开。

第三行为一个整数N(0≤N≤10)代表流水线;

第四行为M个不超过10000的正整数,分别为各条生产流水线每天提供的生产时间,中间以一个空格分开。

输出描述 Output Description
输出文件仅一行,即每天套餐的最大产量。

样例输入 Sample Input
1 2 1
1 2 1
5
16 16 8 9 14

样例输出 Sample Output
10

刚开始想复杂了。。。原来这题并不难。。

#include<iostream>
#include<cstdio>
#include<string>
#include<algorithm>
using namespace std;
const int maxn = 111;
int A,B,C,p1,p2,p3,n,t[maxn],ans;
int f[11][maxn][maxn][maxn];
//f[i][a][b][c] :  前i条流水线, 生产a个汉堡,b个薯条,c个饮料的最大套餐产量
int main()
{
    scanf("%d%d%d",&A,&B,&C);
    scanf("%d%d%d",&p1,&p2,&p3);
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&t[i]);
        t[i]+=t[i-1];
    }
    for(int i=1;i<=n;i++)
        for(int a=A;a*p1<=t[i]&&a<=100;a++)
            for(int b=B;a*p1+b*p2<=t[i]&&b<=100;b++)
                for(int c=C;a*p1+b*p2+c*p3<=t[i]&&c<=100;c++)
ans=max(ans,f[i][a][b][c]=max(f[i][a-A][b-B][c-C]+1,max(f[i-1][a-A][b-B][c-C]+1,f[i][a][b][c])));

    cout<<ans;
}
动态规划知识点及一些常见问题分析。动态规划基本原理.........................................................................................................................1 机器分配(HNOI’95)................................................................................................................. 3 最长不下降序列(HNOI’97)..................................................................................................... 4 凸多边形三角划分(HNOI’97)................................................................................................. 6 系统可靠性(HNOI’98)............................................................................................................. 8 快餐问题(HNOI’99)................................................................................................................. 9 求函数最大值(CTSC'95)............................................................................................................. 14 石子合并(NOI’95).................................................................................................................. 15 游览街区(NOI’97).................................................................................................................. 17 积木游戏(NOI’97).................................................................................................................. 20 免费馅饼(NOI’98).................................................................................................................. 24 棋盘分割(NOI’99).................................................................................................................. 27 钉子和小球(NOI’99).............................................................................................................. 30 等。。。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值