poj 2393

来源:互联网 发布:nginx 400 错误 编辑:程序博客网 时间:2024/04/28 11:08

题意:一个奶牛场,第i个星期需要向外提供牛奶Yi升,第i星期生产牛奶的成本是Ci ,但是本星期提供的牛奶可以是前几个星期就生产好的的(放在仓库里,每单位升牛奶每周需要S元的成本费),问共N周,所花的最少费用。

思路:可以把存储在仓库的费用转化成那周的成本。假设S=5,第2周成本C2=80,第5周生产成本C5=100,如果要计算第5周的花费,(假如第5周的牛奶是从第2周来的),那么第2周的成本可以看作C_2+S*(5-2) =95,而第5周的成本是100元,这时我们就需要95的单价,而不是100的。这样想通之后,可以通过一个fee变量来表示本周及之前所有周所需要的最小单价,这样这周的花费就=fee*Yi。

#include<stdio.h>
 int min(int a,int b)
{
       return a>b?b:a;
}
int main(void)
{
            int N,S,c,y,fee=1000000;//初始fee,以便第一次更新
            long long int amountcost=0;
            scanf("%d%d",&N,&S);
 
           while(N--)
            {
                   scanf("%d%d",&c,&y);
                   fee=min(fee+S,c);        // 这周的最小单价=min(上周的最小单价+一周储存所需费用,这周的单价)
                   amountcost+=fee*y;
            } 
            printf("%lld\n",amountcost);
}

0 0