X轴上有N条线段,每条线段有1个起点S和终点E。最多能够选出多少条互不重叠的线段。(注:起点或终点重叠,不算重叠)。

例如:[1 5][2 3][3 6],可以选[2 3][3 6],这2条线段互不重叠。
Input
  1. 1行:1个数N,线段的数量(2 <= N <= 10000)
  2. 2 - N + 1行:每行2个数,线段的起点和终点(-10^9 <= S,<= 10^9)
Output
  1. 输出最多可以选择的线段数量。
Input示例
  1. 3
  2. 1 5
  3. 2 3
  4. 3 6
Output示例
  1. 2
    将线段排过序之后,数目最多就是每个线段的终点坐标尽可能靠左,因此贪心解决
  1. #include <iostream>
  2. #include <algorithm>
  3. #include <cstring>
  4. #include <cstdio>
  5. #include <vector>
  6. #include <queue>
  7. #include <stack>
  8. #include <cstdlib>
  9. #include <iomanip>
  10. #include <cmath>
  11. #include <cassert>
  12. #include <ctime>
  13. #include <map>
  14. #include <set>
  15. using namespace std;
  16. #pragma comment(linker, "/stck:1024000000,1024000000")
  17. #define lowbit(x) (x&(-x))
  18. #define max(x,y) (x>=y?x:y)
  19. #define min(x,y) (x<=y?x:y)
  20. #define MAX 100000000000000000
  21. #define MOD 1000000007
  22. #define pi acos(-1.0)
  23. #define ei exp(1)
  24. #define PI 3.1415926535897932384626433832
  25. #define ios() ios::sync_with_stdio(true)
  26. #define INF 0x3f3f3f3f
  27. #define mem(a) ((a,0,sizeof(a)))
  28. struct node
  29. {
  30. int u,v;
  31. bool operator<(const node a)
  32. {
  33. return a.u==u?a.v>v:a.u>u;
  34. }
  35. }e[];
  36. int n;
  37. int main()
  38. {
  39. scanf("%d",&n);
  40. for(int i=;i<n;i++)
  41. scanf("%d%d",&e[i].u,&e[i].v);
  42. sort(e,e+n);
  43. int ans=,mark=e[].v;
  44. for(int i=;i<n;i++)
  45. {
  46. if(e[i].u>=mark){ans++,mark=e[i].v;}
  47. else if(e[i].u<mark && e[i].v<mark) mark=e[i].v;
  48. }
  49. printf("%d\n",ans);
  50. return ;
  51. }

51Nod 不重叠的线段(贪心)的更多相关文章

  1. 51nod 1133 不重叠的线段 (贪心,序列上的区间问题)

    题意: 最多能选几条不重叠的线段 思路: 按R从小到大排序,维护一个最大的右端点 右端点最小的那个线段是必选的,可以贪心地证明 代码: #include<iostream> #includ ...

  2. 51 Nod 1133 不重叠的线段 (贪心算法)

    原题链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1133 题目分析:感觉这到第不应该被分到二级算法题,比 109 ...

  3. 51nod 1133 不重叠的线段【贪心/区间覆盖】

    1133 不重叠的线段 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题  收藏  关注 X轴上有N条线段,每条线段有1个起点S和终点E.最多能够选出多少条互不重叠的 ...

  4. 51nod 1133 不重叠的线段(贪心)

    1133 不重叠的线段  基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题  收藏  关注 X轴上有N条线段,每条线段有1个起点S和终点E.最多能够选出多少条互不重叠 ...

  5. 51NOD 1133 不重叠的线段

    1133 不重叠的线段   X轴上有N条线段,每条线段有1个起点S和终点E.最多能够选出多少条互不重叠的线段.(注:起点或终点重叠,不算重叠).   例如:[1 5][2 3][3 6],可以选[2 ...

  6. 51Nod 1133 不重叠的线段 | 典型贪心

    Input示例 3 1 5 2 3 3 6 Output示例 2 题意:给出n条一维线段,求不重合的最多线段数. 解析:这个是典型的贪心算法的区间问题. 贪心策略:每次取尽可能短的区间,而且保证相互之 ...

  7. 不重叠的线段 51nod

    链接 [http://www.51nod.com/onlineJudge/questionCode.html#problemId=1133&noticeId=468024] 题意 X轴上有N条 ...

  8. 51nod 1163 最高的奖励(贪心+优先队列)

    题目链接:51nod 1163 最高的奖励 看着这题我立马就想到昨天也做了一道贪心加优先队列的题了奥. 按任务最晚结束时间从小到大排序,依次选择任务,如果该任务最晚结束时间比当前时间点晚,则将该任务的 ...

  9. 51nod 1117 聪明的木匠 (贪心)

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1117 跟挑战程序书上例题一样,将要切割的n断木板,分别对应二叉树树的叶子 ...

随机推荐

  1. redis的javaclientJedis简单封装

    经过我们团队的一番讨论,终于决定使用redis来进行我们的业务缓存.redis会将数据缓存到内存中,执行效率会非常快.同一时候异步将数据写入到磁盘中.进行持久化. 且redis支持主从同步,支持分布式 ...

  2. caffe中lenet_solver.prototxt配置文件注解

    caffe框架自带的例子mnist里有一个lenet_solver.prototxt文件,这个文件是具体的训练网络的引入文件,定义了CNN网络架构之外的一些基础参数,如总的迭代次数.测试间隔.基础学习 ...

  3. VS 2015 C#不能进入断点

    工程\属性\生成页面,去掉优化代码勾选.

  4. FastJSON杂项

    //通过TypeReference解决泛型的问题 List<Integer> rst = JSON.parseObject(v,new TypeReference<List<I ...

  5. Linux Screen命令使程序远离断网影响

    linux中强大的screen命令2008-12-02 21:53今天发现了一个“宝贝”,就是Linux的screen命令,对于远程登录来说,不仅提供了类似于nohup的功能,而且提供了我非常喜欢的“ ...

  6. java高级——暴力反射

    反射,java中一个比较高级的应用,主要和开发中的框架紧密相连.今天我们就介绍一下他的特性之一,暴力反射.(听名字很恐怖呦) package wo; public class A{ public St ...

  7. Servlet学习(四)——response

    1.概述 在创建Servlet时会覆盖service()方法,或doGet()或doPost(),这些方法都有两个参数,一个是代表请求的request和代表响应response. service方法中 ...

  8. linux系统利用GPU跑数据(tensorflow)

    https://blog.csdn.net/qq_26591517/article/details/82469680 查看机器上GPU情况 命令: nvidia-smi 功能:显示机器上gpu的情况 ...

  9. Remember the Word UVALive - 3942 DP_字典树

    每个小单词的长度都是小于等于100的,这是个重要的突破口. Code: #include <cstdio> #include <algorithm> #include < ...

  10. 路飞学城Python-Day12(practise)

    # 函数基础# 1.写函数,计算传入数字参数的和(动态传参)# def sum_num(x,y):# return x+y# print(sum_num(1,2))# 2.写函数,用户传入修改的文件名 ...