题目概述
有 n 头奶牛,第 i 头奶牛的吃草范围是 (li,ri) ,任何两头奶牛的吃草范围没有交集才可以在一起吃草。问最多有多少奶牛可以一起吃草。
解题报告
前年我竟然做过这题!那时候的初始想法是DP,但是 n 比较大所以TLE了。
先排序,然后我们记录一个位置
示例程序
#include<cstdio>
#include<algorithm>
using namespace std;
#define Fir first
#define Sec second
const int maxn=50000;
int n,ans;
pair<int,int> S[maxn+5];
int main()
{
freopen("program.in","r",stdin);
freopen("program.out","w",stdout);
scanf("%d",&n);for (int i=1;i<=n;i++) scanf("%d%d",&S[i].Fir,&S[i].Sec);
sort(S+1,S+1+n);
for (int i=1,lst=0;i<=n;i++)
if (S[i].Fir>=lst) ans++,lst=S[i].Sec; else
if (S[i].Sec<lst) lst=S[i].Sec;
printf("%d\n",ans);
return 0;
}