木棍加工 - 最短准备时间算法详解
解题报告
这道题目是一道贪心题目,因为我们需要最小化准备时间,所以我们将棍子按照长度和宽度的降序排列,这样就可以保证当前棍子可以与前面的棍子匹配。具体的实现可以使用 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 著作权归作者所有。请勿转载和采集!