【贪心】闭区间问题
2016-07-19 23:03
176 查看
问题X:【贪心】闭区间问题
时间限制:1Sec内存限制:64MB提交:15解决:9
[
题目描述
通过魔法钟回来的张琪曼和魔法学院的其他学员一起研究营救李旭琳脱离“时空陷”的方法。他们建立了n个对历史时间线的监控点,每个监控点可监控历史上的一个时间段,我们可以简单地看做是x轴上n个闭区间。但有些监控点监控的时间段是重叠的,这会干扰监控的准确性。请尝试去掉尽可能少的闭区间,使剩下的闭区间都不相交。输入
第一行为闭区间的个数n(1≤n≤40000),随后n行为闭区间的2个端点。输出
输出去掉尽可能少的闭区间的个数。样例输入
3 1020 1510 2015
样例输出
2 思路:由于是闭区间,比上一题增加不相交就可以。 代码:
#include<iostream> #include<cstdio> #include<algorithm> usingnamespacestd; structnode{ intbegin; intend; }; nodett[105]; intcmp(nodea,nodeb){ returna.end<b.end||a.end==b.end&&a.begin<b.begin; } intmain() { intn; intt; ints=0; intk;//记录上一个计入的节目。 //while(scanf("%d",&n)!=EOF&&n){ scanf("%d",&n); for(inti=0;i<n;i++){ scanf("%d%d",&tt[i].begin,&tt[i].end); if(tt[i].begin>tt[i].end){ t=tt[i].begin; tt[i].begin=tt[i].end; tt[i].end=t; } } sort(tt,tt+n,cmp); s+=1; k=0; for(inti=1;i<n;i++){ if(tt[i].begin>tt[k].end){ s++; k=i; } } printf("%d\n",n-s); s=0; //} return0; }
相关文章推荐
- Rhythm韵:自制音乐app(1f)
- 张宴的博客nginx+php+mysql搭建篇
- 虚拟机 可以多个wifi地址 登录【还得改hosts 与 ifcfg-eth0】
- 游标
- 使用ProgressBar实现进度条
- fork与vfork 的研究
- 一个java数学题,给定一个数组,除了一个数出现1次之外,其余数都出现3次,输出出现一次的那个数。
- 实现jQuery底层链式编程(二)
- 设计模式初探
- 参数数组和普通数组
- Git学习(一)
- 集合映射
- 记录输入三数排序,字符串操作
- Android studio启动到指定Activity
- 2016第30周二
- TOYS-POJ2318
- 注解 @RequestMapping
- 设计模式之策略模式
- Hadoop 2.x源码包编译
- 移动端各终端的适配问题研究--关于viewport