题目:给定一堆会议的起始时间和结束时间,求最多能够参加的会议数目。
思路:贪心策略有三种:选最早开始的会议(会议可能结束得很晚,即持续时间长);选持续时间最短的会议(会议可能开始得很晚);选最早结束的会议。鉴于前两种策略的缺点,贪心选择最早结束的会议。
#include <iostream>
#include <algorithm>
using namespace std;
struct meet{
int st;
int ed;
}meets[100000];
bool cmp(meet a, meet b){
return a.ed < b.ed;
}
int main(){
int n;
cin >> n;
for(int i=0; i<n; i++){
cin>>meets[i].st>>meets[i].ed;
}
sort(meets, meets+n, cmp);
int sum = 1;
int k = 0;
for(int i=1; i<n; i++){
if(meets[i].st > meets[k].ed){
sum+=1;
k=i;
}
}
cout<<sum<<endl;
return 0;
}
网友评论