1 条题解

  • 0
    @ 2026-3-3 16:02:38

    文字教学

    这道题的核心思路是维护当前生产一台机器的最小单位成本

    对于第 ii 周,我们有两种选择:

    1. 直接在第 ii 周生产,单位成本为 CiC_i
    2. 用之前某周生产的机器,此时单位成本为「之前的最小单位成本 + 每周保养费 SS」(因为多存放了一周)。

    我们只需在每一步取这两种选择的最小值,作为当前周的单位成本,再乘以当周需要交付的机器数量 YiY_i,累加即可得到总最小代价。


    代码实现

    #include <bits/stdc++.h>
    using namespace std;
    
    int main() {
        int n, s;
        cin >> n >> s;
        long long ans = 0;
        int mc;
        for (int i = 0; i < n; ++i) {
            int c, y;
            cin >> c >> y;
            if (i == 0)
                mc = c;
            else
                mc = min(mc + s, c);
            ans += (long long)mc * y;
        }
        cout << ans << endl;
        return 0;
    }
    
    • 1

    信息

    ID
    371
    时间
    1000ms
    内存
    250MiB
    难度
    3
    标签
    递交数
    9
    已通过
    4
    上传者