zoukankan      html  css  js  c++  java
  • 1.区间选点 区间问题

     

    区间问题一般都需要对区间进行排序,对左端点排序,或对右端点排序,或双关键字排序

     然后需要证明这样的选法选出来的点数一定是符合答案的,且是选点最少的

     首先按照这个方法来选的话,每一个区间上一定选了一个点,所以这种选法是一种合法的方案

    然后这道题的最优解是指所有合法方案中的选点最少的,所以

     

     

     所以ans = cnt

     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.r < r2.r;
     9 }
    10 int main() {
    11     int n;
    12     cin >> n;
    13     for (int i = 0; i < n; i++) {
    14         int l, r;
    15         cin >> l >> r;
    16         range[i] = {l, r};
    17     }
    18     sort(range, range + n, cmp);
    19     int res = 0, ed = -2e9;
    20     //ed表示上一个点的下标
    21     for (int i = 0; i < n; i++) {
    22         if (range[i].l > ed) {
    23             res++;
    24             ed = range[i].r;
    25         }
    26     }
    27     cout << res << endl;
    28     return 0;
    29 }
  • 相关阅读:
    [Swift]LeetCode900. RLE 迭代器 | RLE Iterator
    TNS-12508 When Issuing Any SET Command For The Listene
    shell getopts
    archive log full ora-00257
    php 验证码
    php 缩略图
    弧度
    php输出中文字符
    流程图
    windows clone 迁移数据库
  • 原文地址:https://www.cnblogs.com/fx1998/p/13459032.html
Copyright © 2011-2022 走看看