P1803 凌乱的yyy / 线段覆盖

题目背景

快 noip 了,yyy 很紧张!

题目描述

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

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

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

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

输入格式

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

输出格式

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

输入输出样例

输入 #1
3
0 2
2 4
1 3
输出 #1
2

说明/提示

对于 20\%20% 的数据, n \le 10n10。

对于 50\%50% 的数据, n \le 10^3n103。

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

对于 100\%100% 的数据, 1\le n \le 10^{6}1n106 , 0 \le a_{i} < b_{i} \le 10^60ai<bi106。

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 struct game{
 4     int start;
 5     int end; 
 6 }g[1000000];
 7 bool cmp(game a,game b){
 8     return a.end<b.end;
 9 }
10 int main(){     //P1803 凌乱的yyy / 线段覆盖
11     int n,finish=0,ans=0;
12     cin>>n;
13     for(int i=0;i<n;i++){
14         cin>>g[i].start>>g[i].end;
15     }
16     sort(g,g+n,cmp);
17     for(int i=0;i<n;i++){
18         if(finish<=g[i].start){
19             ans++;
20             finish=g[i].end;
21         }
22     }
23     cout<<ans;
24     return 0;
25 }

 

posted @ 2022-10-30 22:12  葛杨杨  阅读(38)  评论(0编辑  收藏  举报