poj 2393 Yogurt Factory

题意:

一家工厂每个周可以生产无数的酸奶,每周单位酸奶的价格不相同。

有一个无限大的仓库可以存储这些酸奶,可以储存无限久,储存每单位酸奶的价格相同。

每周要向客户供应一定量的酸奶,这些酸奶可以是本周生产的,也可以是以前存储的。

要求把花费最小化。

思路:

由于每周的酸奶可以来自前面任何一个周的生产,所以可以枚举前面每个周的生产价格,加上保存到这周需要的花费,与这个周生产的价格进行比较,小的作为生产价格。

代码:

 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <algorithm>
 4 using namespace std;
 5 
 6 const int N = 1e4 + 5;
 7 const int inf = 0x3f3f3f3f;
 8 
 9 long long c[N],y[N];
10 
11 int main()
12 {
13     int n,s;
14     
15     while (scanf("%d%d",&n,&s) != EOF)
16     {
17         long long ans = 0;
18         
19         for (int i = 0;i < n;i++)
20         {
21             scanf("%lld%lld",&c[i],&y[i]);
22         }
23         
24         for (int i = 0;i < n;i++)
25         {
26             long long minn = inf;
27             
28             for (int j = 0;j < i;j++)
29             {
30                 minn = min(minn,s * (i - j) + c[j]);
31             }
32             
33             minn = min(minn,c[i]);
34             
35             ans += minn * y[i];
36         }
37         
38         printf("%lld\n",ans);
39     }
40     
41     return 0;
42 }

 

posted @ 2018-04-12 15:37  qrfkickit  阅读(185)  评论(0编辑  收藏  举报