贪心之活动选择问题

将活动按照结束时间单调递增排序

 

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>

using namespace std;

struct node
{
    int b,e;
}a[1000],temp;

int cmp(node x,node y)
{
    return x.e<y.e;
}

int main()
{
    int i,j,n,p,q,x;
    while(~scanf("%d",&n))
    {
        int count=0;
        for(i=0;i<n;i++)
        scanf("%d%d",&a[i].b,&a[i].e);
        sort(a,a+n,cmp);

        x=a[0].e;
        for(j=1;j<n;j++)
        {
            if(a[j].b>=x)  //如果开始时间等于前一个结束时间,就可以举办
            {
                count++;
                x=a[j].e;
            }
        }

        printf("%d\n",count+1);  //+1是因为,x是从第一个结束时间开始的,那么他肯定举办了第一次
    }
    return 0;
}

/**
5
1 3
2 5
4 7
6 9
8 10
**/

 

posted @ 2018-07-24 17:12  Somnus、M  阅读(126)  评论(0编辑  收藏  举报