• bzoj 16801740 : [Usaco2005 Mar]Yogurt factory 贪心 双倍经验


    1680: [Usaco2005 Mar]Yogurt factory

    Description

    The cows have purchased a yogurt factory that makes world-famous Yucky Yogurt. Over the next N (1 <= N <= 10,000) weeks, the price of milk and labor will fluctuate weekly such that it will cost the company C_i (1 <= C_i <= 5,000) cents to produce one unit of yogurt in week i. Yucky's factory, being well-designed, can produce arbitrarily many units of yogurt each week. Yucky Yogurt owns a warehouse that can store unused yogurt at a constant fee of S (1 <= S <= 100) cents per unit of yogurt per week. Fortuitously, yogurt does not spoil. Yucky Yogurt's warehouse is enormous, so it can hold arbitrarily many units of yogurt. Yucky wants to find a way to make weekly deliveries of Y_i (0 <= Y_i <= 10,000) units of yogurt to its clientele (Y_i is the delivery quantity in week i). Help Yucky minimize its costs over the entire N-week period. Yogurt produced in week i, as well as any yogurt already in storage, can be used to meet Yucky's demand for that week.

    吨酸奶。酸奶的生产受到很多因素的影响,所以每个月的生产成本是变化的,其中第 i 个月的成本是

    每吨 Ci 元。

    奶牛可以提前里把酸奶做好,存在仓库里,等需要的时候再拿出来卖。存储在仓库里的酸奶,每

    吨酸奶存放一个月需要支付 S 元的维护费用,存放的时间可以任意长。假设工厂的产量是无限的,存

    储酸奶的仓库也是无限大的。请问为了满足订单的需要,奶牛生产这些酸奶最少要花多少钱?

    Input

    * Line 1: Two space-separated integers, N and S.

     * Lines 2..N+1: Line i+1 contains two space-separated integers: C_i and Y_i.

    • 第一行:两个整数 N 和 S,1 ≤ N ≤ 10000, 1 ≤ S ≤ 100
    • 第二行到第 N + 1 行:第 i + 1 行有两个整数 Ci 和 Ai,1 ≤ Ci ≤ 5000, 1 ≤ Ai ≤ 10000

    Output

    * Line 1: Line 1 contains a single integer: the minimum total cost to satisfy the yogurt schedule. Note that the total might be too large for a 32-bit integer.

    • 单个整数:表示生产酸奶的最小总费用

    Sample Input

    4 5
    88 200
    89 400
    97 300
    91 500

    Sample Output

    126900

    OUTPUT DETAILS:
    第一个月生产 200 吨酸奶;第二个月生产
    700 吨酸奶,并存下 300 吨;第三个月不生产酸
    奶;第三个月生产 500 吨

    思路 :

      每天选择最小价格做酸奶, 最小价格是之前的价格加上相应的储存价格和今天的价格取min

    代码 :

     

    #include <cstdio>
    #include <iostream>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    int tmp;
    long long ans;
    struct node
    {
        long long a,c;
    }d[10001];
    int main()
    {
        /*freopen("factory.in","r",stdin);
        freopen("factory.out","w",stdout);*/
        int n,s;
        scanf("%d%d",&n,&s);
        scanf("%lld%lld",&d[1].c,&d[1].a);
        tmp=d[1].c;
        ans+=tmp*d[1].a;
        for(int i=2;i<=n;i++)    
        {
            tmp+=s;
            scanf("%lld%lld",&d[i].c,&d[i].a);
            if(tmp>=d[i].c)
                tmp=d[i].c;
            ans+=tmp*d[i].a;
        }
        printf("%lld",ans);
    }
    View Code
  • 相关阅读:
    普通PC硬盘与DVR专用硬盘主要差别
    远程监控,需要安装控件,安装前对浏览器设置如下。硬盘录像机,采集卡通用...
    SQL Server不允许进行远程连接
    远程备份(还原)SQL2000数据库
    安装MSDE时提示 实例名无效
    冰雹,刨冰,危险人物
    北京首现最严重的0day攻击方式
    孤独,寂寞,无聊
    大家平时都在做什么
    华山之旅
  • 原文地址:https://www.cnblogs.com/Tobichi/p/9252131.html
Copyright © 2020-2023  润新知