zoukankan      html  css  js  c++  java
  • 4.区间覆盖 区间问题

     

           

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 const int N = 100010;
     4 struct Range {
     5     int l, r;
     6 } range[N];
     7 bool cmp(Range r1, Range r2) {
     8     return r1.l < r2.l;
     9 }
    10 int main() {
    11     int st, ed;
    12     cin >> st >> ed;
    13     int n;
    14     cin >> n;
    15     for (int i = 0; i < n; i++) {
    16         cin >> range[i].l >> range[i].r;
    17     }
    18     sort(range, range + n, cmp);
    19     bool success = false;
    20     int res = 0;
    21     for (int i = 0; i < n; i++) {
    22         //用双指针算法扫描一遍
    23         int j = i, r =-2e9;
    24         while (j < n && range[j].l <= st) {
    25             r = max(range[j].r,  r);
    26             j++;
    27         }
    28         /*
    29         上面扫描的作用就是找到:
    30         所有左端点在st的左边的所有区间里面
    31         右端点的最大值是多少
    32         */
    33         res++;
    34         if (r < st) {
    35             res = -1;
    36             break;
    37         }
    38         st = r;
    39         if (st >= ed) {
    40             success = true;
    41             break;
    42         }
    43         i = j - 1;
    44     }
    45     if (!success) {
    46         res = -1;
    47     }
    48     cout << res << endl;
    49     return 0;
    50 }
  • 相关阅读:
    格式布局
    tp框架之文件上传
    tp框架之验证码
    tp框架之自动验证表单
    tp框架之留言板练习
    tp框架之session
    tp框架之登录验证
    tp框架之函数调用
    tp框架之分页与第三方类的应用
    tp框架之AJAX
  • 原文地址:https://www.cnblogs.com/fx1998/p/13460235.html
Copyright © 2011-2022 走看看