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 }
  • 相关阅读:
    Source Insight新建工程文件
    移植3.4.2内核之韦东山笔记
    移植最新u-boot(裁剪和修改默认参数)
    C++与C语言在结构体上的区别
    VIP之Switch
    VIP之CSC
    VIP之Scaler
    VIP之FrameBuffer
    VIP之MixerII
    VIP之Clipper
  • 原文地址:https://www.cnblogs.com/fx1998/p/13459032.html
Copyright © 2011-2022 走看看