http://acm.hdu.edu.cn/showproblem.php?pid=2037
“今年暑假不AC?”
“是的。”
“那你干什么呢?”
“看世界杯呀,笨蛋!”
“@#$%^&*%...”
确实如此,世界杯来了,球迷的节日也来了,估计很多ACMer也会抛开电脑,奔向电视了。
作为球迷,一定想看尽量多的完整的比赛,当然,作为新时代的好青年,你一定还会看一些其它的节目,比如新闻联播(永远不要忘记关心国家大事)、非常6+7、超级女生,以及王小丫的《开心辞典》等等,假设你已经知道了所有你喜欢看的电视节目的转播时间表,你会合理安排吗?(目标是能看尽量多的完整节目)
没什么戏~~~~~
Solution
贪心,按左端点排序,扫一遍,记录右指针,当l>=右指针(ans++)
// This file is made by YJinpeng,created by XuYike's black technology automatically.
// Copyright (C) 2016 ChangJun High School, Inc.
// I don't know what this program is. #include <iostream>
#include <vector>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#define MOD 1000000007
#define INF 1e9
using namespace std;
typedef long long LL;
const int MAXN=110;
inline int gi() {
register int w=0,q=0;register char ch=getchar();
while((ch<'0'||ch>'9')&&ch!='-')ch=getchar();
if(ch=='-')q=1,ch=getchar();
while(ch>='0'&&ch<='9')w=w*10+ch-'0',ch=getchar();
return q?-w:w;
}
struct node{
int l,r;
bool operator<(node a)const{
return a.l==l?r<=a.r:l<a.l;
}
}a[MAXN];
int main()
{
freopen("2037.in","r",stdin);
freopen("2037.out","w",stdout);
int n;
while(n=gi(),n){
for(int i=1;i<=n;i++)
a[i]=(node){gi(),gi()};
sort(a+1,a+1+n);int ans=0;
for(int i=1,to=-1;i<=n;i++){
if(a[i].l>=to)ans++,to=a[i].r;
to=min(a[i].r,to);
}printf("%d\n",ans);
}
return 0;
}