不重叠的线段
2015-08-27 20:36
393 查看
X轴上有N条线段,每条线段有1个起点S和终点E。最多能够选出多少条互不重叠的线段。(注:起点或终点重叠,不算重叠)。
例如:[1 5][2 3][3 6],可以选[2 3][3 6],这2条线段互不重叠。
思路:贪心,就是以前的安排节目的题目,在这里将线段末端点按照从小到大排序,就跟哪个活动结束早哪个先安排
例如:[1 5][2 3][3 6],可以选[2 3][3 6],这2条线段互不重叠。
思路:贪心,就是以前的安排节目的题目,在这里将线段末端点按照从小到大排序,就跟哪个活动结束早哪个先安排
#include <iostream> #include <cstdio> #include <algorithm> #include <string> using namespace std; int const maxn = 10000; int s[maxn],t[maxn]; pair<int,int> line[maxn]; int solve(int n){ int ans = 0; for(int i = 0; i < n; i++){ line[i].first = t[i]; line[i].second = s[i]; } sort(line,line+n); int t = -1e9;//线段末端位置 for(int i = 0; i < n; i++){ if(t <= line[i].second){ ans++; t = line[i].first; } } return ans; } int main(){ int n; while(scanf("%d",&n) != EOF){ for(int i = 0; i < n; i++) scanf("%d%d",&s[i],&t[i]); printf("%d\n",solve(n)); } return 0; }
相关文章推荐
- HDU1556-----Color the ball
- 华为OJ初级题中多线程
- iOS程序员面试题系列(1)
- 导入Robotium 工程
- poj 2516 Minimum Cost 【最小费用最大流】【求解K种物品的最小费用,独立求解累加每个结果】
- bootm命令移植
- 批处理删除今天以前的同文件下的TXT文件
- java 多线程(三)条件对象
- java中栈和堆的区别
- Cocos2dx 3.4 BabeLua 3.0.1.0 Windows下lua环境配置
- Java IO编程 学习笔记 (其一:基础部分)
- fragment中使用recycleView报nullpoint错误
- java的4种代码块
- linux常用命令
- Qt Quick分组属性案例
- mybatis中$和#的区别
- android屏幕适配解决方案
- Mysql触发器
- Bug调试(lldb)
- Cookie/Session机制详解