描述 C小加有一些木棒,它们的长度和质量都已经知道,需要一个机器处理这些木棒,机器开启的时候需要耗费一个单位的时间,如果第i+1个木棒的重量和长度都大于等于第i个处理的木棒,那么将不会耗费时间,否则需要消耗一个单位的时间。因为急着去约会,C小加想在最短的时间内把木棒处理完,你能告诉他应该怎样做吗?
#include <iostream> #include<vector> #include<algorithm> #include<string> using namespace std; struct stave { int length; int weight; }s[5000]; bool cmp(stave p,stave q) { if (p.length == q.length) return p.weight<q.weight; else return p.length < q.length; } int main(void) { int T = 0; cin >> T; while (T--) { int num = 0; cin >> num; for (int i = 0; i < num; i++) { cin >> s[i].length; cin >> s[i].weight; } sort(s, s + num, cmp); /************ 处理 ***********************************/ int sum = 0; int j = 1; for (int i = 0; i < num; i++) { if (s[i].weight != 0) { sum++;/*最重要的地方*/ int n = 0; n = s[i].weight; j = i + 1; while (j != num) { if (s[j].weight!=0) if (n <= s[j].weight) { n = s[j].weight; s[j].weight = 0; } j++; } } } cout << sum << endl; } return 0; }