zoukankan      html  css  js  c++  java
  • 1133 不重叠的线段 (贪心算法,最大区间不重合问题)

    X轴上有N条线段,每条线段有1个起点S和终点E。最多能够选出多少条互不重叠的线段。(注:起点或终点重叠,不算重叠)。
     
    例如:[1 5][2 3][3 6],可以选[2 3][3 6],这2条线段互不重叠。
    Input
    第1行:1个数N,线段的数量(2 <= N <= 10000)
    第2 - N + 1行:每行2个数,线段的起点和终点(-10^9 <= S,E <= 10^9)
    Output
    输出最多可以选择的线段数量。
    Input示例
    3
    1 5
    2 3
    3 6
    Output示例
    2


    代码如下:
    #include<cstdio>
    #include<algorithm>
    #define MAXN 100010
    using namespace std;
    struct node
    {
     int l, r;
    };
    bool cmp(node a, node b)
    {
     return a.r < b.r;
    }
    node num[MAXN];
    int main()
    {
     int n;
     while (scanf("%d", &n) != EOF)
     {
      for (int i = 0; i < n; i++)
       scanf("%d%d", &num[i].l, &num[i].r);
      sort(num, num + n, cmp);
      int ans = 0;
      if (n>0)
      {
       ans = 1;
       int temp = num[0].r;
       for (int i = 0; i < n;i++)
       if (num[i].l >= temp)
       {
        temp = num[i].r;
        ans++;
       }
      }
      printf("%d\n", ans);
     }
     return 0;
    }
  • 相关阅读:
    LoadRunner11 问题记录
    安装依赖包时,编译提示依赖库未安装,但实际上已经安装
    Close_wait进程过多
    JS中的混合模式
    JS面相对象
    JS中的工厂模式
    函数式编程Map()&Reduce()
    JavaScript函数参数与调用
    JavaScript中的prototype
    循环
  • 原文地址:https://www.cnblogs.com/ALINGMAOMAO/p/9433024.html
Copyright © 2011-2022 走看看