zoukankan      html  css  js  c++  java
  • BZOJ1680: [Usaco2005 Mar]Yogurt factory

    1680: [Usaco2005 Mar]Yogurt factory

    Time Limit: 5 Sec  Memory Limit: 64 MB
    Submit: 106  Solved: 74
    [Submit][Status][Discuss]

    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

    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.

    HINT

     

    Source

    题解:
    刚看完题目,卧槽,这不是费用流吗?n=10000,瞬间蔫了。。。。。。。。
    原来是贪心:
    对于每一天可以从当天转移也可以从以前转移,只要保存一个以前的最小值,在这一天加一个s再跟c比较,更新完最小值直接更新答案。
    水爆了。。。
    代码:(copy)
     1 #include<cstdio>
     2 inline int read()
     3 {
     4     int x=0,f=1;char ch=getchar();
     5     while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
     6     while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
     7     return x*f;
     8 }
     9 int n,s,save=100000000;
    10 long long ans;
    11 int main()
    12 {
    13     n=read();
    14     s=read();
    15     for (int i=1;i<=n;i++)
    16      {
    17          int w=read(),c=read();
    18          save+=s;
    19          if (save>w)save=w;
    20          ans+=(long long)save*c;
    21      }
    22      printf("%lld",ans);
    23 }
    View Code
  • 相关阅读:
    Vsftpd 3.0.2 正式版发布
    Putdb WebBuilder 6.5 正式版本发布
    SoaBox 1.1.6 GA 发布,SOA 模拟环境
    pynag 0.4.6 发布,Nagios配置和插件管理
    Percona Playback 0.4,MySQL 负荷回放工具
    xombrero 1.3.1 发布,微型 Web 浏览器
    Hypertable 0.9.6.4 发布,分布式数据库
    libmemcached 1.0.11 发布
    CryptoHeaven 3.7 发布,安全邮件解决方案
    Android Activity生命周期
  • 原文地址:https://www.cnblogs.com/zyfzyf/p/3984367.html
Copyright © 2011-2022 走看看