- 问题描述:有n项工作,每项工作分别在 S 时间开始,在 T 时间结束。 此外,参与工作的时间段不能重复
输入格式
第一行是一个整数 n ,接下来 n 行每行是 2 个整数 S, T (S < T),表示工作开始、结束的时间。
输出格式
一个整数,即最多参加的比赛数目
输入
3
0 2
2 4
1 3
输出
2
代码如下:
#include <iostream>
#include <algorithm>
using namespace std;
pair<int, int> itv[1000005];
int main(){
int n, ans, t;
cin >> n;
for(int i = 0; i < n; i++)
cin >> itv[i].second >> itv[i].first; //把 T 存入 first, 把 S 存入second
sort(itv, itv + n); // 让结束时间早的工作排在前面
ans = t = 0;
for(int i = 0; i < n; i++){
if(t <= itv[i].second){
ans++;
t = itv[i].first;
}
}
cout << ans << endl;
return 0;
}