POJ 2393:Yogurt Factory
来源:互联网 发布:数据库第三范式 例子 编辑:程序博客网 时间:2024/06/07 05:03
Description
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
* Lines 2..N+1: Line i+1 contains two space-separated integers: C_i and Y_i.
Output
Sample Input
4 588 20089 40097 30091 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.
How to solve?
Think about the yogurt needed in each week: it have to be either produced in the current week or several weeks ago. In other word, the price of yogurt in a week could be used to "update" the succeeding several weeks. So you may think that it is a double loop.
Actually, it's not . A single loop is enough. The price of each week is only responsible for updating the next week, for the updated price , which is represented by a temporary integer variable ,could continue to update the price of its adjacent next week.
Here is the Accepted code [1]:
#include<iostream>#include<fstream>#include<cstdio>#include<cstring>#include<cstdlib>#include<cmath>#include<algorithm>#include<complex>#include<set>#include<map>#include<list>#include<vector>#include<deque>using namespace std;typedef long long ll;const int INF=0x3f3f3f3f;const int Mod=1e9+7;const double eps=1e-7;int main(){int N,S;scanf("%d%d",&N,&S);int *C,*Y;C=(int*)malloc((N+1)*sizeof(int));Y=(int*)malloc((N+1)*sizeof(int));C[0]=Y[0]=0;for(int i=1;i<=N;i++){scanf("%d%d",C+i,Y+i);}ll ans=0;int tmp=INF;for(int i=1;i<=N;i++){tmp+=S;tmp=min(tmp,C[i]);ans+=tmp*Y[i];}cout<<ans<<endl;return 0;}Reference:
#9231912 UnderSilence's solution for [POJ-2393]
- poj 2393 Yogurt factory
- POJ-2393-Yogurt factory
- poj 2393 yogurt factory
- poj 2393 Yogurt factory
- POJ-2393-Yogurt factory
- POJ 2393 Yogurt factory
- POJ 2393【Yogurt factory】
- POJ 2393 Yogurt factory
- POJ 2393 Yogurt factory
- poj 2393 - Yogurt factory
- POJ 2393 Yogurt factory
- POJ 2393 Yogurt Factory
- poj 2393 Yogurt factory
- poj 2393 Yogurt factory
- POJ 2393 Yogurt factory
- poj 2393 Yogurt factory
- poj 2393 Yogurt factory
- poj-2393-Yogurt Factory
- TP分页类优化 css代码
- webpack细节点记录
- 39. Combination Sum
- Android 广告条轮播的实现
- Jeddict1:简述
- POJ 2393:Yogurt Factory
- 根据数组中对象的某一个属性值进行排序
- shell--符号
- java基础学习之各种内存图
- Scala入门到精通——第十一节 Trait进阶
- PHP加密扩展库Mcrypt安装和实例
- Optical flow method
- javaFX 窗口关闭事件
- c++ new(this)