UPC9568 zzs妹子

题目描述

zzs和他的n个妹子快乐的生活在一起。
有一天,zzs的妹子们想喝水。第i个妹子想在li到ri(包括端点)的时间内喝水。
每个妹子喝水的时候都需要用水杯,每个水杯只能同时被一个妹子用。由于妹子都非常可爱,zzs当然不忍心让她们渴着。请问zzs至少买多少个水杯才能满足妹子们的要求?

输入

第一行一个整数n。
第2行到第n+1行,每行两个整数,第i+1行的两个整数表示li,ri。(1≤n≤2×105,1≤li≤ri≤109)

输出

一行一个整数表示答案。

样例输入

3
1 2
2 3
3 4

样例输出

2


与教室安排节目不同,这里需要求最少的杯子数,应当优先安排开始时间早的人。

#include "bits/stdc++.h"
 
using namespace std;
const int maxn = 2e5 + 100;
const int mod = 1e9 + 7;
typedef long long ll;
struct node {
    int l, r;
 
} e[maxn];
//int beizi[maxn];
priority_queue<int, vector<int>, greater<int> > q;
 
bool cmp(node a, node b) {
    if (a.l != b.l) {
        return a.l < b.l;
    } else {
        return a.r < b.r;
    }
}
 
int main() {
    //freopen("input.txt", "r", stdin);
    int n;
    cin >> n;
    for (int i = 0; i < n; i++) {
        cin >> e[i].l >> e[i].r;
    }
    sort(e, e + n, cmp);
    q.push(0);
    for (int i = 0; i < n; i++) {
        if (q.top() < e[i].l) {
            q.pop();
            q.push(e[i].r);
        } else {
            q.push(e[i].r);
        }
    }
    cout << q.size() << endl;
    return 0;
}
原文地址:https://www.cnblogs.com/albert-biu/p/10307841.html