题目描述:

给定x轴上的N(0<N<100)条线段,每个线段由它的二个端点a_I和b_I确定,I=1,2,……N.这些坐标都是区间(-999,999)的整数。有些线段之间会相互交叠或覆盖。请你编写一个程序,从给出的线段中去掉尽量少的线段,使得剩下的线段两两之间没有内部公共点。所谓的内部公共点是指一个点同时属于两条线段且至少在其中一条线段的内部(即除去端点的部分)。


输入描述:

输入第一行是一个整数N。接下来有N行,每行有二个空格隔开的整数,表示一条线段的二个端点的坐标。


输出描述:

输出第一行是一个整数表示最多剩下的线段数。


样例输入:

3

6  3

1  3

2  5


样例输出:

2


数据范围及提示:

0<N<100


贪心法:

该线段覆盖问题其实本质上是贪心算法里面的最大不相交覆盖问题。根据题意,我们需要最多的线段,所以对于每一条右端点相同的线段,选长度小的;至于为什么要选右端点作升序排列?我还不是特别能够理解,最好就是列出具体的线段去比较左端点排列和右端点排列的区别。当使用右端点升序时,你仅仅需要考虑前面那条线段(前者)的右端点是否比后面那条线段(后者)的左端点小即可,而使用左端点升序时,则还需要考虑更多。似乎用贪心的最优子结构是可以解释的,有大佬能解释就帮忙解释一下,谢谢。

#include<iostream>
using namespace std;
int main()
{int n,t;int left[101],right[101];cin>>n;
//输入线段并调整线段的左右端点,简单地交换for(int i=0;i<n;i++){cin>>left[i]>>right[i];if(left[i]>right[i]){t=left[i];left[i]=right[i];right[i]=t;}}
//令线段按右端点升序排列,使用冒泡排序for(int i=0;i<n-1;i++){for(int j=0;j<n-i-1;j++){if(right[j]>right[j+1]){t=left[j];left[j]=left[j+1];left[j+1]=t;t=right[j];right[j]=right[j+1];right[j+1]=t;}}}
//统计符合条件的线段数int j=0,sum=1;for(int i=1;i<n;i++){if(left[i]>=right[j]){sum++;j=i;}}cout<<sum;return 0;
}

1214线段覆盖问题——贪心法相关推荐

  1. 【贪心】【codevs】1214 线段覆盖

    http://codevs.cn/problem/1214/ 我去这个题...wa的我都没脾气了... 我写while(~scanf("%d", &n))竟然是不对的... ...

  2. 【多题合集】线段覆盖1、2、3

    1214 线段覆盖 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 给定x轴上的N(N<100)条线段,每个线段由它的二 ...

  3. 算法入门到进阶(贪心法)

    文章目录 基本概念 应用规则 解析 源码 测试 归纳 贪心法适用特征 最优子结构性质 贪心选择性质 贪心法使用常见问题 区域覆盖问题 最优装载问题 多及调度问题 活动安排问题 源码 测试 基本概念 贪 ...

  4. 《c陷阱与缺陷》之贪心法

    在词法分析中,有条规则:每个符号应该包含尽可能多的字符,被称为"贪心法"或"大嘴法". K&R表述如下:如果(编译器的)输入流截止至某个字符之前都已经被 ...

  5. 贪心问题JAVA_java背包问题(贪心法)

    完全背包问题 一个旅行者有一个最多能用m公斤的背包,现在有n种物品,每件的重量分别是W1,W2,...,Wn,每件的价值分别为C1,C2,...,Cn.若的每种物品的件数足够多.求旅行者能获得的最大总 ...

  6. ACM公选课第五节贪心4.14-5.4补+第六节上贪心线段覆盖

    每一步都不从全局,找当下就好 特征(还有dp基础) 求解(比如最小生成树那个) 伪代码 就是每个房间的比例都不一样 要靠经验 事件序列问题(dp贪心经典题) 用贪心解,最先结束的,后面选最先结束且不重 ...

  7. P1803 凌乱的yyy / 线段覆盖

    P1803 凌乱的yyy / 线段覆盖 https://www.luogu.org/problemnew/show/P1803 提交 题目提供者 yyy2015c01 嘤嘤嘤 评测方式 云端评测 标签 ...

  8. 【LeetCode笔记】55. 跳跃游戏(Java、贪心法)

    文章目录 题目描述 解法 & 思路 题目描述 可以用动态规划来做,dp[i]代表以第i个下标做起点,可以到达的最远的地方,从后往前走,最后dp[0] >= len-1说明可达. 不过我的 ...

  9. 线段覆盖(洛谷P1803题题解,C++语言描述)

    题目要求 P1803题目链接 分析 这题是一个线段覆盖问题,但并不是很复杂,也是贪心思想. 想要尽可能放线段,不能重合(可以正好相交),那就可以每一次只关注右端点,尽可能地选择剩余未选的线段中右端点最 ...

最新文章

  1. 意大利物联网技术发展现状
  2. 3层交换机和2层交换机的区别
  3. php-函数小知识点
  4. [云炬创业管理笔记]第一章讨论3
  5. hadoop yarn配置任务优先级
  6. Jboss/Wildfly安装配置
  7. java中对date的一些处理以及获取date
  8. zblog php 安装,zblog教程:Z-BlogPHP如何安装
  9. spring mvc 总体概况
  10. mysql不识别生僻字_MySQL生僻字插入失败怎么办
  11. Honeywell 1900 条码阅读器
  12. 【Reference Reading】一种基于双硼/Gd剂的治疗诊断学方法以提高硼中子捕获治疗肺癌的疗效
  13. 利用QQ游戏破解QQ密码
  14. mysql5.7优化
  15. keras+卷积神经网络HWDB手写汉字识别
  16. 移动硬盘文件丢失要如何找回呢?
  17. 将正式数据库中的表与测试库同步
  18. Redis Lua 列表批量操作
  19. 如何给原图添加文字水印和图片水印
  20. yolov5篇---官方代码docker部署训练

热门文章

  1. 关于“u盘打开为空,但是占用空间”的解决方法之一
  2. 保姆级教程|ECharts图表插件一文搞懂!
  3. 月考勤报表的TSQL查询
  4. 深入浅出 Docker
  5. python 矩阵拼接_Numpy基础4 矩阵取整 拉平 拼接 切分 复制等函数操作
  6. 【官方文档】Fluent Bit 安装在 Windows
  7. 项目中身份证有效期的判断规则
  8. JSP中访问本地图片
  9. 引用 和指针 ,简单, 一怔见血
  10. 2的次幂表示(递归求解)