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 ),表示比赛开始、结束的时间。
输出格式
一个整数最多参加的比赛数目。
输入输出样例
输入
3 0 2 2 4 1 3
输出
2
解题思路:
按结束时间由小到大排序,优先选择结束时间越早的越好。
#include<iostream>
#include<algorithm>
using namespace std;
struct Com {
int start;
int end;
}c[1000100];
int cmp(Com a, Com b)
{
return a.end < b.end;
}
int main()
{
int n;
cin >> n;
for (int i = 0; i < n; i++)
cin >> c[i].start >> c[i].end;
sort(c, c + n, cmp);
int pre = c[0].end;
int cnt = 1;
for (int i = 1; i < n; i++)
{
if (c[i].start >= pre)
{
cnt++;
pre = c[i].end;
}
}
cout << cnt << endl;
return 0;
}
版权声明:本文为lovecyr原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。