洛谷-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% 的数据, (1le 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;
}
原文地址:https://www.cnblogs.com/yuzec/p/12854606.html