题意:有一个奶牛场,第i周的生产成本为c,需要数量为 y,每周的存储成本为s。问怎么安排使得成本最低?
思路:
- 成本最低是吧?求出每周的最低成本*该周需要的数量就是成本最低
- 每周的成本有两个:自己本周的成本或者上周的成本+存储的费用
思路2的代码实现:
for (int i = 1; i < n; i++) { w[i] = min(w[i], w[i - 1] + s); }
注意:本题涉及的数据比较大,需要用到 long long int型
解题代码:
#include <iostream> #include <algorithm> #include <cstdio> using namespace std; int c[10001], y[10001]; long long int sum = 0; int w[10001]; int main() { int n, s; scanf("%d%d", &n, &s); for (int i = 0; i < n; i++) { scanf("%d%d", &c[i], &y[i]); w[i] = c[i]; } for (int i = 1; i < n; i++) { w[i] = min(w[i], w[i - 1] + s); } for (int i = 0; i < n; i++) sum += 1ll * w[i] * y[i]; printf("%lld ", sum); return 0; }