分享免费的编程资源和教程

网站首页 > 技术教程 正文

洛谷刷题C++语言 | P1803 线段覆盖

goqiw 2024-10-05 19:16:20 技术教程 20 ℃ 0 评论

学习C++从娃娃抓起!记录下洛谷C++学习和备考过程中的题目,记录每一个瞬间。

附上汇总贴:洛谷刷题C++语言 | 汇总_热爱编程的通信人的博客-CSDN博客


【题目描述】

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

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

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

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

【输入】

第一行是一个整数 n,接下来 n 行每行是 2 个整数 ai,bi (ai<bi),表示比赛开始、结束的时间。

【输出】

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

【输入样例】

3
0 2
2 4
1 3

【输出样例】

2

【代码详解】

#include <bits/stdc++.h>
using namespace std;
struct game {
    int l, r;
}gs[1000005];
bool cmp(game g1, game g2)
{
    return g1.r < g2.r;
}
int main()
{
    int n, ans=0, mark=0;
    cin >> n;
    for (int i=0; i<n; i++) cin >> gs[i].l >> gs[i].r;
    sort(gs, gs+n, cmp);
    for (int i=0; i<n; i++) {
        if (mark<=gs[i].l) {
            ans++;
            mark = gs[i].r;
        }
    }
    cout << ans;
    return 0;
}

【运行结果】

3
0 2
2 4
1 3
2

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表