zoukankan      html  css  js  c++  java
  • AcWing 803. 区间合并

    #include <iostream>
    #include <vector>
    #include <algorithm>
    using namespace std;
    typedef pair<int, int> PII;
    void merge(vector<PII> &segs) {
        vector<PII> res;
        sort(segs.begin(), segs.end());//pair排序会优先以左端点排序
        int st = -2e9, ed = -2e9;
        for (auto seg : segs)
            if (ed < seg.first) {  //没遇任何交集 ,说明找到了一个新的区间
                if (st != -2e9)  //首先不能是初始的区间
                    res.push_back({st, ed});  //那么就把他加到答案里去
                st = seg.first, ed = seg.second;
            } else ed = max(ed, seg.second);  //否则说明是有交集的,更新右端点
        //看一下最后一个区间 ,把最后一个区间加到答案里去
        if (st != -2e9) res.push_back({st, ed});  //判断主要是防止区间是空的
        segs = res;
    }
    int main() {
        int n;
        scanf("%d", &n);
        vector<PII> segs;
        for (int i = 0; i < n; i ++ ) {
            int l, r;
            scanf("%d%d", &l, &r);
            segs.push_back({l, r});
        }
        merge(segs);
        cout << segs.size() << endl;
        return 0;
    }
  • 相关阅读:
    hashlib模块
    configparser模块
    xml模块和shelve模块
    json与pickle模块
    3/30
    os模块
    sys模块
    shutil模块
    random模块
    2月书单《编码隐匿在计算机软硬件背后的语言》 13-16章
  • 原文地址:https://www.cnblogs.com/QingyuYYYYY/p/11785053.html
Copyright © 2011-2022 走看看