概述:加工零件,如果后一个零件的长度和重量大于前一个,则不计时间,求所用的最少时间。
思路和感想:形如Problem E,思路十分相似。但是有一些细节性的问题需要仔细斟酌。
#include<iostream>
#include<fstream>
#include<algorithm>
#include<vector>
using namespace std;
struct Stick
{
int length, weight;
bool flag=0;
bool operator < (const Stick &a)const
{
if (length != a.length)
return length > a.length;
else
return weight > a.weight;
}
};
int main()
{
//ifstream cin("aaa.txt");
vector<Stick>v;
int n;
cin >> n;
while (n--)
{
v.clear();
Stick a;
int sum;
cin >> sum;
while (sum--)
{
cin >> a.length >> a.weight;
v.push_back(a);
}
sort(v.begin(), v.end());
int time = 0;
vector<Stick>::iterator it1, it2;
for (it1 = v.begin(); it1 != v.end(); ++it1)
{
if (it1->flag) continue;
int min = it1->weight;
for (it2 = it1 + 1; it2 != v.end(); ++it2)
{
if (min >= it2->weight&&!it2->flag)
{
min = it2->weight;
it2->flag = 1;
}
}
++time;
}
cout << time << endl;
}
return 0;
}