贪心算法,时间排列
思路:每一个活动的结束时间小于等于下一项活动的的开始时间即可;
#include <bits/stdc++.h>
#include<iostream>
#define ll long long
#define MAX 100005
#define js ios::sync_with_stdio(0);cin.tie(0);
#define MOD 1e9+7
typedef struct
{
ll start,end;
} TM;
using namespace std;
bool kmp(TM a,TM b)
{
return a.end<b.end;
}
int main()
{
js;
ll n,i,j,count=1;
TM st[MAX];
cin>>n;
if(n==0)
return 0;
for(i=0 ; i<n ; i++)
cin>>st[i].start>>st[i].end;
sort(st,st+n,kmp);
for(i=0,j=i+1 ; i<n-1,j<n ; j++)
if(st[i].end<=st[j].start)
{
count++;
i=j;
}
cout<<count<<endl;
return 0;
}
|