2393:Yogurt factory

总时间限制: 
1000ms

内存限制: 
65536kB
描述
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.
输入
* 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.
输出
* 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.
样例输入
4 5
88 200
89 400
97 300
91 500
样例输出
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.
【题目大意】 

有一个制作酸奶的工厂,需要在接下来的N(1<=N<=10000)周里
生产酸奶,第i周的成本为Ci(1<=Ci<=5000),工厂有一个无限大的仓库可
以存储生产好了的酸奶,并且这些酸奶不会过期,可以一直存储,但是存
储每单位酸奶每周要花费S(1<=S<=100)。计算:要满足条件:工厂第i周必
须送出Yi(1<=Yi<=10000)单位的酸奶(可以从仓库中送出,也可以本周生产),
最小花费是多少?

【样例说明】:第一周生产200单位酸奶并且全部送出;第二周,生产700单位:送出400,存储300; 第三周,送出第二周存储的300单位; 第四周,生产500单位并全部送出。

【题目分析】 第i周的酸奶可以是任意小于i的周生产的。于是如果第i周的酸奶在第j(i>j)周生产,相当于这酸奶在第j周生产,并且花费是第i周的成本加上(i-j)周的储存费用。

第i周的最小花费是可以由第i-1周的最小花费推出的:mincost(i) = min( mincost(i-1)+s,Ci );而第一周的最小成本就是C1,因为第一周的酸奶只能第一周生产。

于是从第一周开始可以逐步推出所有周的最小花费:

  

1 for( int i=1; i<=N-1; i++ ) {
2 week[i].C = min( week[i-1].C+S,week[i].C );
3 //i推i+1,到N-1时就已经推出N了 N单独处理就行了
4 }

关于数据范围:最坏的情况是,有10000周,每周都需要送出10000单位酸奶,
并且每周的成本都是5000.在这种情况下,共需要10000*5000*10000=5e+11的花费。
所以使用long long 就可以了。

【代码】

 1 #include <iostream>
2 #include <algorithm>
3 using namespace std;
4
5 const int maxn = 10010;
6
7 struct _week
8 {
9 int C;
10 int Y;
11 };
12 _week week[maxn];
13 int N,S;
14
15 int main()
16 {
17 cin >> N >> S;
18 long long totalcost = 0;
19 for( int i=1; i<=N; i++ ) {
20 cin >> week[i].C >> week[i].Y;
21 }
22
23 //推出2到N-1周的最小花费同时计算总费用
24 for( int i=1; i<=N-1; i++ ) {
25 totalcost += week[i].C * week[i].Y;
26 week[i+1].C = min( week[i].C+S,week[i+1].C );
27 }
28
29 //总费用加上最后一周(第N周)的花费
30 totalcost += week[N].C * week[N].Y;
31 cout << totalcost << endl;
32 return 0;
33 }

百炼 POJ2393:Yogurt factory【把存储费用用递推的方式表达】的更多相关文章

  1. POJ2393 Yogurt factory 【贪心】

    Yogurt factory Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6821   Accepted: 3488 De ...

  2. poj2393 Yogurt factory(贪心,思考)

    https://vjudge.net/problem/POJ-2393 因为仓储费是不变的. 对于每一周,要么用当周生产的,要么接着上一周使用的价格(不一定是输入的)加上固定的仓储费用. 应该算是用到 ...

  3. POJ-2393 Yogurt factory 贪心问题

    题目链接:https://cn.vjudge.net/problem/POJ-2393 题意 有一个生产酸奶的工厂,还有一个酸奶放在其中不会坏的储存室 每一单元酸奶存放价格为每周s元,在接下来的N周时 ...

  4. poj-2393 Yogurt factory (贪心)

    http://poj.org/problem?id=2393 奶牛们有一个工厂用来生产奶酪,接下来的N周时间里,在第i周生产1 单元的奶酪需要花费ci,同时它们也有一个储存室,奶酪放在那永远不会坏,并 ...

  5. poj2393 Yogurt factory

    思路: 贪心. 实现: #include <iostream> #include <cstdio> #include <algorithm> using names ...

  6. POJ 2393 Yogurt factory 贪心

    Description The cows have purchased a yogurt factory that makes world-famous Yucky Yogurt. Over the ...

  7. BZOJ 1740: [Usaco2005 mar]Yogurt factory 奶酪工厂 贪心 + 问题转化

    Description The cows have purchased a yogurt factory that makes world-famous Yucky Yogurt. Over the ...

  8. poj 2393 Yogurt factory

    http://poj.org/problem?id=2393 Yogurt factory Time Limit: 1000MS   Memory Limit: 65536K Total Submis ...

  9. BZOJ1680: [Usaco2005 Mar]Yogurt factory

    1680: [Usaco2005 Mar]Yogurt factory Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 106  Solved: 74[Su ...

随机推荐

  1. Java并发-线程池篇-附场景分析

    作者:汤圆 个人博客:javalover.cc 前言 前面我们在创建线程时,都是直接new Thread(): 这样短期来看是没有问题的,但是一旦业务量增长,线程数过多,就有可能导致内存异常OOM,C ...

  2. mysql基本命令(增,查,改,删)

    from oldboy egon

  3. Docker------Idea连接远程并生成和上传镜像

    1.Docker开启远程访问连接 备注: 1)Linux是CentOS7版本 2)安装Docker可参考: https://www.cnblogs.com/tianhengblogs/p/125202 ...

  4. 统一UOS操作系统 修改源地址

    统一UOS操作系统 修改源地址 问题: 执行apt-get update的时候提示: root@sugon-PC:/etc/apt# apt-get update -y错误:1 https://uos ...

  5. 1.4 重置root用户密码

    图1-45  系统的欢迎界面 1.4 重置root用户密码 平日里让运维人员头疼的事情已经很多了,因此偶尔把Linux系统的密码忘记了并不用慌,只需简单几步就可以完成密码的重置工作.但是,如果您是第一 ...

  6. Linux巡检常用命令

    # uname -a # 查看内核/操作系统/CPU信息 # head -n 1 /etc/issue # 查看操作系统版本 # cat /proc/cpuinfo # 查看CPU信息 # hostn ...

  7. OpenStack挂载ISO镜像解决

    OpenStack挂载ISO镜像解决 Summary 本次在OpenStack平台上进行,基于kvm,挂载iso镜像到OpenStack虚拟机中. 1.针对linux: 上传所需要挂载的iso镜像(必 ...

  8. JQuery 动态加载 HTML 元素时绑定点击事件无效问题

    问题描述 假设项目中有一个列表页面,如下: 当点击列表一行数据可以显示详情页面,而详情页面的数据是根据当前行的数据作为参数,通过 ajax 请求到后台返回的数据,再根据返回的结果动态生成 html 页 ...

  9. Gorm入门使用

    Gorm GORM CRUD 数据库的增删改查 go get -u github.com/jinzhu/gorm go get -u github.com/jinzhu/gorm/dialects/m ...

  10. java面试一日一题:再谈垃圾回收器中的串行、并行、并发

    问题:请讲下java中垃圾回收器的串行.并行.并发 分析:该问题主要考察在垃圾回收过程中垃圾回收线程和用户线程的关系 回答要点: 主要从以下几点去考虑, 1.串行.并行.并发的概念 2.如何考虑串行. ...