贪心专题——Yogurt factory

本文介绍了一种解决奶酪厂成本优化问题的算法。通过贪心策略,算法能够确定每周生产奶酪的最佳成本,考虑了生产成本和存储费用,以实现总成本最低的目标。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原题链接POJ—2393
原题大意:一个奶酪厂,在接下来的N个星期内需要生产奶酪,每周的奶酪的生产成本和需求量都在不断变化。在第i周每生产一单位的奶酪需要Ci元,奶酪的需求量为Si。此外工厂有一个仓库可以无限量的保存奶酪,且不会变质,每单位奶酪保存一周需要S元。问奶酪厂要想完成生产任务,最小的成本是多少?
题目解法:贪心更新每周的生产成本即可,即从第二周开始逐个判断。即先判断C[0]+s<C[1]是否成立,若成立则说明在第一周先生产出来第二周的,再保存到第二周再卖的成本比较小,所以第二周的最小生产成本即更新为C[0]+s。然后再用第二周的最小成本来更新第三周的最小成本,因为第二周已经是最小成本,所以在更新第三周的时候就不再用第一周了,因为C[0]+2*s<C[1]+s是不可能发生的,因为早已经更新了C[1],以此类推,所以在更新第i周的最小成本时,用第i-1周的更新即可。
题目代码

#include<stdio.h>
int main()
{
    int n,s;//n即n周,s即存储价格
    int suit[10010][2];//suit[i][0]用来储存第i周的成本,suit[i][1]用来储存第i周的成本
    int cost[10010];//用来储存第i周的最小成本
    long long all=0;//最终的最小成本,即输出答案
    scanf("%d%d",&n,&s);
    int i;
    for(i=0;i<n;i++)
    {
        scanf("%d%d",&suit[i][0],&suit[i][1]);
    }
    cost[0]=suit[0][0];
    for(i=1;i<n;i++)//更新最小成本
    {
        if(cost[i-1]+s<suit[i][0])
            cost[i]=cost[i-1]+s;
        else
            cost[i]=suit[i][0];
    }
    for(i=0;i<n;i++)
        all+=cost[i]*suit[i][1];
    printf("%lld\n",all);
    return 0;
}

欢迎留言哦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值