1 条题解

  • 0
    @ 2025-4-6 15:33:58

    解题思路

    这个问题类似于动态规划中的“生产调度”问题。我们需要决定每周生产多少酸奶,以及是否存储部分酸奶以供未来使用,以最小化总成本。

    关键点:

    1、生产与存储的权衡:如果当前周的生产成本较低,可以多生产并存储供未来使用;否则,尽量少生产,利用之前存储的酸奶。

    2、动态规划:可以维护一个变量表示当前的最优生产成本,逐步更新每周的最小成本。

    算法步骤:

    1、初始化:第一周必须生产 Y1Y_1 单位酸奶,成本为 Y1C1Y_1 * C_1

    2、遍历每周:对于第 ii 周,比较当前周的生产成本与前几周的生产成本加上存储费用:

    如果前几周的生产成本加上存储费用低于当前周的生产成本,则选择前几周生产并存储。

    否则,当前周生产。

    3、更新最优成本:维护一个变量表示当前的最小生产成本,逐步更新。

    优化:

    1、可以维护一个“当前最优生产成本”变量,表示在当前周生产一单位酸奶的最小成本(包括存储费用)。

    2、对于每周的需求 YiY_i,如果当前最优生产成本低于 CiC_i,则用最优成本生产;否则,用 CiC_i 生产并更新最优成本。

    #include <iostream>
    #include <stdio.h>
    #include <limits.h>
     
    using namespace std;
     
    int main()
    {
        int n, s, c, y;
     
        while(~scanf("%d%d", &n, &s)) {
            int minc = 10000;
            long long sum = 0;
            while(n--) {
                scanf("%d%d", &c, &y);
                minc = min(minc + s, c);
                sum += minc * y;
            }
     
            printf("%lld\n", sum);
        }
     
        return 0;
    }
    • 1

    信息

    ID
    1394
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    2
    已通过
    1
    上传者