您的位置:首页 > 其它

Problem B & Problem I

2016-03-14 22:02 211 查看
概述:加工零件,如果后一个零件的长度和重量大于前一个,则不计时间,求所用的最少时间。

思路和感想:形如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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ACM SDAU 贪心算法