贪心算法习题
·
小 T 开办了一家机器工厂,在 N个星期内,原材料成本和劳动力价格不断起伏,第 i 周生产一台机器需要花费 Ci 元。若没把机器卖出去,每保养一台机器,每周需要花费 S 元,这个费用不会发生变化。
机器工厂接到订单,在第 i 周需要交付 Yi 台机器给委托人,第 i 周刚生产的机器,或者之前的存货,都可以进行交付。
请你计算出这 n 周时间内完成订单的最小代价。
输入格式
第一行输入两个整数 N 和 S,接下来 N 行每行两个数 Ci 和 Yi。
输出格式
输出一个整数,表示最少的代价。
输入输出样例
输入 #1复制
4 5 88 200 89 400 97 300 91 500
输出 #1复制
126900
说明/提示
1≤n≤104,1≤Ci≤5000,1≤S≤100,0≤Yi≤104。
#include<bits/stdc++.h>//万能头文件
using namespace std;
int min(int x,int y)//比较函数,懒得写头文件
{
return x>y?y:x;//三目运算符,解释下如果x>y为ture,则返回y,反之x.
}
int main()
{
int n,s;
int c,y;
long long ans,sum=0;
cin>>n>>s;
cin>>c>>y;//第一个入读,特殊处理,由于前面没有生产机器
ans=c;
sum+=ans*y;
for(int i=1;i<n;i++)
{
cin>>c>>y;
ans=min(ans+s,c);//和之前的价值+维修费与现状的价钱比较,找小的
sum+=ans*y;//计算
}
cout<<sum;
return 0;
}
更多推荐

所有评论(0)