P1376 机器工厂
题目描述
小T开办了一家机器工厂,在N(N<=10000)个星期内,原材料成本和劳动力价格不断起伏,第i周生产一台机器需要花费Ci(1<=Ci<=5000)元。若没把机器卖出去,每保养一台机器,每周需要花费S(1<=S<=100)元,这个费用不会发生变化。
机器工厂接到订单,在第i周需要交付Yi(0<=Yi<=10^4)台机器给委托人,第i周刚生产的机器,或者之前的存货,都可以进行交付。
请你计算出这n周时间内完成订单的最小代价。
输入输出格式
输入格式:
第一行输入两个整数N和S,接下来N行输入Ci和Yi
输出格式:
输出一个整数,表示最少的代价
输入输出样例
输入样例#1:
4 5 88 200 89 400 97 300 91 500
输出样例#1:
126900
说明
时限1S,空间256MB
贪心。如果本周的生产成本比上周+维修费大,那么就上周生产,屯到这周使用。
如果本周的生产成本低,则本周生产。
那么就看代码实现吧。
1 #include <cstdio> 2 3 int n, c[10005], s, y[10005]; 4 int main() 5 { 6 scanf("%d%d", &n, &s); 7 for(int i=0; i<n; i++) 8 scanf("%d%d", &c[i], &y[i]); 9 long long ans=0; 10 int minn = 100000000; //生产成本最小 第0周生产成本无穷大 11 for(int i=0; i<n; i++) 12 { 13 minn += s; //保养+当周所需钱的最小值 14 if(minn > c[i]) //如果最小值比本周生产成本高 则本周的为最小值 15 minn = c[i]; 16 ans += minn*y[i]; 17 } 18 printf("%lld", ans); 19 return 0; 20 }