• poj 2393 Yogurt factory


    http://poj.org/problem?id=2393

    Yogurt factory
    Time Limit: 1000MS   Memory Limit: 65536K
    Total Submissions: 7341   Accepted: 3757

    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.

    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.

    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. 

    Source

     
     
     
    分析:

    简单DP~求最少的花费~

    题目是说你每周可以生产牛奶,每周生产的价格为Ci,每周需要上交的牛奶量Yi,你可以选择本周生产牛奶,也可选择提前几周生产出存储在仓库中(仓库无限大,而且保质期不考虑),每一周存仓库牛奶需要花费S元,让你求出所有周的需求量上交的最少花费。

    将S转换到花费中~

    AC代码:

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<iostream>
     4 using namespace std;
     5 const int maxn=10011;
     6 int n,s;
     7 int y[maxn],c[maxn];
     8 int main()
     9 {
    10     while(scanf("%d%d",&n,&s)!=EOF)
    11     {
    12     for(int i=0;i<n;i++)
    13         scanf("%d%d",&c[i],&y[i]);
    14     long long ans=0;
    15     for(int i=1;i<n;i++)
    16         c[i]=min(c[i-1]+s,c[i]);
    17     for(int i=0;i<n;i++)
    18         ans+=c[i]*y[i];
    19     printf("%lld
    ",ans);
    20     }
    21     return 0;
    22 }

    AC代码:

     1 #include<cstdio>
     2 
     3 using namespace std;
     4 int a[10005],b[10005];
     5 
     6 int main() {
     7     int n,s;
     8     while(~scanf("%d %d",&n,&s)) {
     9         for(int i = 0;i < n;i++) {
    10             scanf("%d %d",&a[i],&b[i]);
    11         }
    12         
    13         __int64 res = a[0] * b[0];
    14         for(int i = 1;i < n;i++) {
    15             int mi = 10000000,pos = -1;
    16             for(int j = 0;j < i;j++) {
    17                 if(mi > s * (i - j) && (a[i] - a[j] > s * (i - j)) ) {
    18                     mi = s * (i - j);
    19                     pos = j;
    20                 }
    21             }
    22             if(pos != -1)
    23                 res += a[pos] * b[i] + mi * b[i];
    24             else
    25                 res += a[i] * b[i];
    26         }
    27         printf("%I64d
    ",res);
    28     }
    29     return 0;
    30 }
    View Code
  • 相关阅读:
    Flink中的window、watermark和ProcessFunction(三)
    ThreadLocal刨根问底
    Flink的流处理API(二)
    Flink简介(一)
    SparkStreaming
    SparkSQL
    Spark入门
    SparkCore
    【HNOI2009】 最小圈
    【BOI 2002】 双调路径
  • 原文地址:https://www.cnblogs.com/jeff-wgc/p/4483304.html
Copyright © 2020-2023  润新知