【解题报告】【USACO】酸奶工厂
来源:互联网 发布:匡恩网络上市 编辑:程序博客网 时间:2024/04/27 20:55
Title:酸奶工厂
Description
奶牛经营了一家酸奶工厂,生意非常红火。在接下去的 N 个月里,第 i 个月需要向社会提供 A i 吨酸奶。酸奶的生产受到很多因素的影响,所以每个月的生产成本是变化的,其中第 i 个月的成本是 每吨 C i 元。
奶牛可以提前里把酸奶做好,存在仓库里,等需要的时候再拿出来卖。存储在仓库里的酸奶,每 吨酸奶存放一个月需要支付 S 元的维护费用,存放的时间可以任意长。假设工厂的产量是无限的,存 储酸奶的仓库也是无限大的。请问为了满足订单的需要,奶牛生产这些酸奶最少要花多少钱?
Input Format
- 第一行:两个整数 N 和 S,1 ≤ N ≤ 10000, 1 ≤ S ≤ 100
- 第二行到第 N + 1 行:第 i + 1 行有两个整数 C i 和 A i ,1 ≤ C i ≤ 5000, 1 ≤ A i ≤ 10000
Output Format
单个整数:表示生产酸奶的最小总费用
Sample Input
4 5 88 20089 40097 30091 500
Sample Output
126900
Hint
第一个月生产 200 吨酸奶;第二个月生产吨酸奶,并存下 300 吨;第三个月不生产酸奶;第三个月生产 500 吨
Source
Yogurt factory, USACO 2005 Mar
Analysis
算法:贪心
简析:当第i月的酸奶保存到第j月的单位维护费+单位成本(i<=j)小于第j月的单位成本,则选取i月的酸奶填充j月较优
当第i月的酸奶保存到第j月的单位维护费+单位成本(i<=j)大于等于第j月的单位成本,则用第j月的酸奶来填充之后月份的酸奶会比用第i月的 更优【因为成本已经固定,每月的维修费是一样的】(i<j<=k)
做法:用now记录前i-1个月的最优单位费用(每个月累加s),若比第i月的单位费用大则替换。 计算入答案
注意:now和ans可能超出longint范围,使用long long
复杂度:O(n)
Code
<span style="font-size:18px;"><span style="font-size:18px;"><span style="font-family:SimHei;font-size:18px;">//USACO 酸奶工厂 贪心 //错误:1: 数据范围,now,ans(long long)//错误 2: long long输出时是lld #include<cstdio>int n,s,c,a;long long now=10000000,ans=0;int main(){scanf("%d%d",&n,&s);for (int i=1;i<=n;i++){scanf("%d%d",&c,&a);if (now>c) now=c;ans+=now*a;now+=s;}printf("%lld",ans); return 0;}</span></span></span>
0 0
- 【解题报告】【USACO】酸奶工厂
- 酸奶工厂
- USACO:Overfencing解题报告
- usaco Transformations 解题报告
- USACO Stringsobits 解题报告
- USACO Camelot 解题报告
- USACO Cowcycles 解题报告
- USACO Wormholes 解题报告
- USACO Telecowmunication 解题报告
- USACO Picture 解题报告
- USACO Twofive 解题报告
- USACO 3.4解题报告
- USACO 4.1解题报告
- USACO 4.2解题报告
- USACO 4.3解题报告
- USACO 4.4解题报告
- USACO 5.3解题报告
- USACO 6.1解题报告
- SQL之乱笔--游标使用
- Mysql更新某一个字段的值
- php 连接 oracle
- <label>标签for属性的妙用
- is also in my heart
- 【解题报告】【USACO】酸奶工厂
- in the past the cam
- 二维码的妙用:通过Zxing实现wifi账号密码分享功能
- wordsbr but man
- 【cocos2d-js官方文档】九、cc.loader
- 关于事件的传递机制。
- printf 打印颜色
- cocos 杂记
- Java Collection