学习C++从娃娃抓起!记录下USACO(美国信息学奥赛)备考学习过程中的题目,记录每一个瞬间。
附上汇总贴:USACO备考冲刺必刷题 | 汇总-CSDN博客
【题目描述】
小 T 开办了一家机器工厂,在 N个星期内,原材料成本和劳动力价格不断起伏,第 i 周生产一台机器需要花费 Ci 元。若没把机器卖出去,每保养一台机器,每周需要花费 S 元,这个费用不会发生变化。
机器工厂接到订单,在第 i 周需要交付 Yi 台机器给委托人,第 i 周刚生产的机器,或者之前的存货,都可以进行交付。
请你计算出这 n 周时间内完成订单的最小代价。
【输入】
第一行输入两个整数 N 和 S,接下来 N 行每行两个数 Ci 和 Yi。
【输出】
输出一个整数,表示最少的代价。
【输入用例】
4 5
88 200
89 400
97 300
91 500
【输出用例】
126900
【代码详解】
#include <bits/stdc++.h>
using namespace std;
int n, s, c, y;
long long ans;
int main()
{
cin >> n >> s; // 输入n和s
cin >> c >> y; // 输入第1周的c和y
ans = c * y; // 得到代价
int minn = c; // 定义最小花费为c,后面循环更新
for (int i=2; i<=n; i++) { // 从第2周遍历至n周
cin >> c >> y; // 输入这周的c和y
minn = min(minn+s, c); // 在上周最小的花费基础上增加s元保养费、本周花费中选择最小值
ans += minn * y; // 用最小花费乘上本周机器数量,再进行累加,得到最小代价
}
cout << ans << endl; // 打印最小代价
return 0;
}
【运行结果】
4 5
88 200
89 400
97 300
91 500
126900
标签:机器,minn,P1376,int,factory,花费,必刷题,ans,输入
From: https://blog.csdn.net/guolianggsta/article/details/134606597