洛谷-P1803 凌乱的yyy / 线段覆盖

洛谷-P1803 凌乱的yyy / 线段覆盖

原题链接:https://www.luogu.com.cn/problem/P1803


题目背景

快 noip 了,yyy 很紧张!

题目描述

现在各大 oj 上有 n 个比赛,每个比赛的开始、结束的时间点是知道的。

y 认为,参加越多的比赛,noip 就能考的越好(假的)。

所以,他想知道他最多能参加几个比赛。

由于 y 是蒟蒻,如果要参加一个比赛必须善始善终,而且不能同时参加 2 个及以上的比赛。

输入格式

第一行是一个整数 n ,接下来 n 行每行是 2 个整数 \(a_{i},b_{i}\) ( \(a_{i}<b_{i}\) ),表示比赛开始、结束的时间。

输出格式

一个整数最多参加的比赛数目。

输入输出样例

输入 #1

3
0 2
2 4
1 3

输出 #1

2

说明/提示

对于 20% 的数据, \(n \le 10\)

对于 50% 的数据, \(n \le 10^3\)

对于 70% 的数据, \(n \le 10^{5}\)

对于 100% 的数据, \(1\le n \le 10^{6}\)\(0 \le a_{i} < b_{i} \le 10^6\)

C++代码

#include <iostream>
#include <algorithm>
using namespace std;

struct node {
    int s;
    int e;
    bool operator<(const node &t)const{
        return e<t.e;
    }
}c[1000000];

int main() {
    int n,i,time,ans=1;
    cin>>n;
    for(i=0;i<n;++i)
        cin>>c[i].s>>c[i].e;
    sort(c,c+n);
    time=c[0].e;
    for(i=1;i<n;++i)
        if(c[i].s>=time) {
            time=c[i].e;
            ++ans;
        }
    cout<<ans<<endl;
    return 0;
}
posted @ 2020-05-09 08:03  yuzec  阅读(225)  评论(0编辑  收藏  举报