您的位置:首页 > 其它

51nod 活动安排问题之一

2017-04-16 19:42 225 查看
输入

第1行:1个数N,线段的数量(2 <= N <= 10000)
第2 - N + 1行:每行2个数,线段的起点和终点(-10^9 <= S,E <= 10^9)


输出

输出最多可以选择的线段数量。


输入示例
//@auther zhou
//@Number 201408070203
//@start time:
//@finish time:
/*@此处注意:

*/
/* 测试数据

*/
#include<iostream>
#include<cstring>
#include<vector>
#include<cmath>
#include<algorithm>
using namespace std;
struct x{
int start;
int end;
};
bool cmp(x a,x b){
if(a.end<b.end)return 1;
return 0;
}
int main(){
int n;
vector<x> a;
x temp;
cin>>n;
for (int i=0;i<n;i++){
cin>>temp.start>>temp.end;
a.push_back(temp);
}
sort(a.begin(),a.end(),cmp);

//	for (int i=0;i<n;i++){
//		cout<<a[i].start<<" "<<a[i].end<<endl;
//
//	}
int pick=0,lasttime=-1e9-1;
int i=0;

while(i<n){
if(a[i].start>=lasttime) {
lasttime=a[i].end;
pick++;
}

i++;
}
cout<<pick<<endl;

return 0;
}


3
1 5
2 3
3 6


输出示例

2


贪心问题

endtime选最早的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: