Yogurt factory
Time Limit: 1000MS |
| Memory Limit: 65536K |
Total Submissions: 8091 |
| Accepted: 4139 |
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.
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.
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.
* Lines 2..N+1: Line i+1 contains two space-separated integers: C_i and Y_i.
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
Hint
OUTPUT DETAILS:
In week 1, produce 200 units of yogurt and deliver all of it. In week 2, produce 700 units: deliver 400 units while storing 300 units. In week 3, deliver the 300 units that were stored. In week 4, produce and deliver 500 units.
In week 1, produce 200 units of yogurt and deliver all of it. In week 2, produce 700 units: deliver 400 units while storing 300 units. In week 3, deliver the 300 units that were stored. In week 4, produce and deliver 500 units.
题意:一家奶酪加工厂在n个星期里每个星期要为客户生产y_i单位的奶酪,每个星期里每单位的奶酪成本为c_i。工厂有一个巨大的(内存不限)仓库,每单位的储存费用为s。问完成n个星期的生产,最低费用是多少。
题解:找到每个星期要生产的奶酪的最低成本即可。若当前的 c_j 大于 (j-i)*s+c_i 则可以在之前就生产好,储存在仓库中。
蒟蒻的我写了一个O(n^2)算法,TLE(;′⌒`) 只会暴力,蠢到无可救药。
O(n)做法很简单,一直记录当前要生产的奶酪的最低生产价格就行了。
代码如下:
#include<cstdio>
#define ll long long
int main()
{
int n,s,c,y,c_min=9999;
while(scanf("%d%d",&n,&s)!=EOF)
{
ll ans=0;
while(n--)
{
scanf("%d%d",&c,&y);
if(c>c_min+s)
c=c_min+s;
c_min=c;
ans+=c*y;
}
printf("%lld\n",ans);
}
return 0;
}