BZOJ 1680 [Usaco2005 Mar]Yogurt factory:贪心只用考虑上一个

Posted Leohh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BZOJ 1680 [Usaco2005 Mar]Yogurt factory:贪心只用考虑上一个相关的知识,希望对你有一定的参考价值。

题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1680

题意:

  在接下来的n周内,第i周生产一吨酸奶的成本为c[i],订单为y[i]吨酸奶。

  酸奶可以提前生产,可以存放无限长的时间,存放一周的花费为s。

  问你在完成所有订单的前提下,最小的花费为多少。

 

题解:

  贪心。

  p[i]代表第i周的最小成本。

  对于p[i],只用考虑p[i-1],因为已经保证了p[i-1]是i-1之前所有周的最优答案。

  所以转移为:p[i] = min(c[i], p[i-1]+s)。

  最小花费 = ∑ p[i]*y[i]。

 

AC Code:

 1 #include <iostream>
 2 #include <stdio.h>
 3 #include <string.h>
 4 #define MAX_N 10005
 5 #define INF 10000000
 6 
 7 using namespace std;
 8 
 9 int n,s;
10 int c[MAX_N];
11 int y[MAX_N];
12 int p[MAX_N];
13 long long ans=0;
14 
15 void read()
16 {
17     cin>>n>>s;
18     for(int i=1;i<=n;i++)
19     {
20         cin>>c[i]>>y[i];
21     }
22 }
23 
24 void solve()
25 {
26     p[0]=INF;
27     for(int i=1;i<=n;i++)
28     {
29         p[i]=min(c[i],p[i-1]+s);
30         ans+=p[i]*y[i];
31     }
32 }
33 
34 void print()
35 {
36     cout<<ans<<endl;
37 }
38 
39 int main()
40 {
41     read();
42     solve();
43     print();
44 }

 

以上是关于BZOJ 1680 [Usaco2005 Mar]Yogurt factory:贪心只用考虑上一个的主要内容,如果未能解决你的问题,请参考以下文章

bzoj 16801740 : [Usaco2005 Mar]Yogurt factory 贪心 双倍经验

bzoj1742[Usaco2005 nov]Grazing on the Run 边跑边吃草*&&bzoj3074[Usaco2013 Mar]The Cow Run*

BZOJ1740: [Usaco2005 mar]Yogurt factory 奶酪工厂

BZOJ1739: [Usaco2005 mar]Space Elevator 太空电梯

最小生成树BZOJ1682[Usaco2005 Mar]-Out of Hay 干草危机

BZOJ1738: [Usaco2005 mar]Ombrophobic Bovines 发抖的牛