POJ 2393 Yogurt Factory

POJ 2393题目大意如下:

这是一个费用问题,实际背景是生产酸奶,工程分为N周,指定每周存储酸奶的费用为S,给出每周的单位酸奶制造成本以及客户需求量,要求给出最佳的生产方案,使得总的花费最少。

可以使用一个二维数组,分别存储原定该周的酸奶制造成本,以及涮选后的酸奶制造成本,关于涮选后的酸奶制造成本可以这样涮选:与前一周的新的制造成本做比较

        if (exp[i][0] > exp[i - 1][1] + S) {
            exp[i][1] = temp;
        }
        else exp[i][1] = exp[i][0];

可能会想,为什么只考虑前面一周的更新成本,而不考虑之前其他周的制造成本?根据更新原理,之前一周的更新成本相当于已经是和之前的更新成本做比较的结果了,所以不需要再和之前的更新结果作类似于

第i周和第k周:
比较成本:
exp[i][0] + (k - i)*S < exp[k][0];

是不需要的,以下为AC代码:

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <queue>

using namespace  std;
const int maxn = 10000;
int exp[maxn + 1][2];
int dem[maxn + 1];

int N, S;

void solve() {
    int i = 1;
    unsigned long long sum = exp[0][0]*dem[0];
    exp[0][1] = exp[0][0];
    while (i < N) {
        int temp = exp[i - 1][1] + S;
        if (exp[i][0] > exp[i - 1][1] + S) {
            exp[i][1] = temp;
        }
        else exp[i][1] = exp[i][0];
        sum += exp[i][1]*dem[i];
        i++;
    }
    printf("%llu\n", sum);
}

int main(int argc, const char * argv[]) {
    // insert code here...
    scanf("%d %d", &N, &S);
    for (int i = 0; i < N; i++) {
        scanf("%d %d", &exp[i][0], &dem[i]);
    }
    solve();
    return 0;
}

Accept 816K / 47MS

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值