其他分享
首页 > 其他分享> > 7-5 氮气工厂 (20分)

7-5 氮气工厂 (20分)

作者:互联网

某人为了研究QQ飞车,收购了一个氮气工厂,接下来的 N N N(1≤ N N N≤10000)个星期里,氮气价格和劳力价格不断变化。第 i 周,生产一个单位氮气需要 C ​ i C​_i C​i​(1≤ C i C_i Ci​​​ ≤5000)元。 工厂有一个存储柜,每保存一单位氮气,每周需要 S S S(1≤ S S S≤100) 元,这个费用不会变化。存储柜十分强大,可以存无限量的氮气,而且保证它们时刻都能使用。 工厂接到订单,在第 i 周需要交付 Y i Y_i Yi​(1≤ Y i Y_i Yi​≤ 1 0 4 10^4 104) 单位的氮气给加油站。第 i 周刚生产的氮气,以及之前的存货,都可以作为产品交付。请帮此人计算这段时间里完成任务的最小花费.

输入格式:

第一行两个整数 N N N 和 S S S,接下来 N 行,每行两个整数 C i C_i Ci​ 和 Y i Y_i Yi​。

输出格式:

一个整数,表示最少的成本,答案可能会超过 32 位整数范围。

输入样例:

在这里给出一组输入。例如:

4 5
88 200
89 400
97 300
91 500

输出样例:

在这里给出相应的输出。例如:

样例解释:

• 第 1 周生产 200 单位氮气并全部交付;
•第 2 周生产 700 单位,交付 400 单位,剩下 300 单位;
• 第 3 周交付 300 单位存货;
• 第 4 周生产并交付 500 单位。

每周更新最便宜的价格即可。

#include <cstdio>
#include <algorithm>
#define ll long long
using namespace std;
const ll inf = 0x3f3f3f3f3f3f3f3f;
int main(){
	int n, s;
	scanf("%d%d", &n, &s);
	ll bestprice = inf, ans = 0;
	for(int i = 1; i <= n; i++){
		ll c, y;
		scanf("%lld%lld", &c, &y);
		bestprice = min(c, bestprice+s);
		ans += bestprice*y;
	}
	printf("%lld\n", ans);
	return 0;
}

标签:20,bestprice,ll,样例,工厂,单位,交付,氮气
来源: https://blog.csdn.net/qq_43279710/article/details/111088828