会议安排(经典贪心问题)

2021-04-15  本文已影响0人  乘瓠散人

题目:给定一堆会议的起始时间和结束时间,求最多能够参加的会议数目。
思路:贪心策略有三种:选最早开始的会议(会议可能结束得很晚,即持续时间长);选持续时间最短的会议(会议可能开始得很晚);选最早结束的会议。鉴于前两种策略的缺点,贪心选择最早结束的会议。

#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;
}
上一篇 下一篇

猜你喜欢

热点阅读