poj 2393 奶牛场生产成本问题 贪心算法

题意:有一个奶牛场,第i周的生产成本为c,需要数量为 y,每周的存储成本为s。问怎么安排使得成本最低?

思路:

  1. 成本最低是吧?求出每周的最低成本*该周需要的数量就是成本最低
  2. 每周的成本有两个:自己本周的成本或者上周的成本+存储的费用

思路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;
}
君子知命不惧,自当日日自新
原文地址:https://www.cnblogs.com/xuxiaojin/p/9400892.html