解题报告

这道题目是一道贪心题目,因为我们需要最小化准备时间,所以我们将棍子按照长度和宽度的降序排列,这样就可以保证当前棍子可以与前面的棍子匹配。具体的实现可以使用 C++ STL 的 sort 函数来实现。

代码:

#include <iostream>
#include <algorithm>
using namespace std;

struct Stick {
    int l, w;
};

bool cmp(Stick a, Stick b) {
    if (a.l != b.l) {
        return a.l > b.l;
    } else {
        return a.w > b.w;
    }
}

int main() {
    int n;
    cin >> n;
    Stick sticks[5000];
    for (int i = 0; i < n; i++) {
        cin >> sticks[i].l >> sticks[i].w;
    }
    sort(sticks, sticks + n, cmp);
    int prepareTime = 1;
    for (int i = 1; i < n; i++) {
        if (sticks[i].l <= sticks[i - 1].l && sticks[i].w <= sticks[i - 1].w) {
            continue;
        } else {
            prepareTime++;
        }
    }
    cout << prepareTime << endl;
    return 0;
}
木棍加工 - 最短准备时间算法详解

原文地址: https://www.cveoy.top/t/topic/n4k4 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录