zoukankan      html  css  js  c++  java
  • POJ 2393 贪心 简单题

    有一家生产酸奶的公司,连续n周,每周需要出货numi的单位,已经知道每一周生产单位酸奶的价格ci,并且,酸奶可以提前生产,但是存储费用是一周一单位s费用,问最少的花费。

    对于要出货的酸奶,要不这一周生产,要不提前生产。

    什么时候采用什么生产方式呢?

    若第i周的货提前生产的话,假设在j周生产,则费用为(i-j)*s+c[j]

    若c[i]>(i-j)*s+c[j],则更新c[i]=(i-j)*s+c[j]

    更新要O(n^2)?

    可以证明,最优的生产方式是,要不在这一周生产,要不在上一周生产(这里的上一周的c已经是更新过的)

    O(n)更新数组c即可。

     1 #include<cstdio>
     2 #include<cstring>
     3 
     4 using namespace std;
     5 
     6 const int maxn=1e4+5;
     7 #define LL long long
     8 
     9 int c[maxn];
    10 int num[maxn];
    11 
    12 int main()
    13 {
    14     int n,s;
    15     while(~scanf("%d%d",&n,&s))
    16     {
    17         for(int i=1;i<=n;i++)
    18             scanf("%d%d",&c[i],&num[i]);
    19 
    20         for(int i=2;i<=n;i++)
    21         {
    22             if(s+c[i-1]<c[i])
    23                 c[i]=s+c[i-1];
    24         }
    25         LL ans=0;
    26         for(int i=1;i<=n;i++)
    27         {
    28             ans+=(LL)c[i]*num[i];
    29         }
    30         printf("%lld
    ",ans);
    31     }
    32     return 0;
    33 }
    View Code
  • 相关阅读:
    前端面试题六
    前端面试题五
    前端面试题四
    前端面试题之三
    前端面试题分享二
    前端面试题分享一
    JS学习笔记一
    git使用学习笔记一
    常见User-Agent
    ado.net之SQLServer和Oracle (sys_cursor) 数据库链接——获取结果集方式对比
  • 原文地址:https://www.cnblogs.com/-maybe/p/4696691.html
Copyright © 2011-2022 走看看