贪心问题,按照他的结束时间排序
#include<bits/stdc++.h>
using namespace std;
struct Act
{
int st,en;
}a[100005];
int n,f[100005],ans;
inline int read()
{
char c=getchar();
int t=0;
while(c>'9'||c<'0')c=getchar();
while(c>='0'&&c<='9')
{
t=t*10+c-'0';
c=getchar();
}
return t;
}
bool cmp(Act a,Act b)
{
return a.en<b.en;
}
int main()
{
n=read();
for(int i=1;i<=n;i++)
{
a[i].st=read()*60+read();
a[i].en=read()*60+read()-1;
}
sort(a+1,a+n+1,cmp);
int nowr=-1;
for(int i=1;i<=n;i++)
if(a[i].st>nowr)
ans++,nowr=a[i].en;
printf("%d\n",ans);
return 0;
}