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 太空电梯