题目hdu 2037

题目描述:给你n个节目开始的时间和结束的时间,询问你最多能完整的看完多少个节目。

解:贪心,以结束时间排序,那么取a0.end作为起点必然是最好的,然后去查找ai.start >= 上一个节目的结束时间 ,且结束时间最小(早)的。然后cnt一下就ok了。

代码:

#include<bits/stdc++.h>
using namespace std;
bool cmp(pair<int,int>a,pair<int,int> b)
{
    return a.second<b.second;
}
int main()
{
    int n;
    while(cin>>n&&n)
    {
        pair<int,int>a[101];
        for(int i=0;i<n;i++)cin>>a[i].first>>a[i].second;
        sort(a,a+n,cmp);
        int ans=1;
        int ed=a[0].second;
        int i=0;
        while(i<n)
        {
            i++;
            if(a[i].first>=ed){ans++;ed=a[i].second;}
        }
        cout<<ans<<endl;
    }
    return 0;
}