博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
闭区间合并
阅读量:6799 次
发布时间:2019-06-26

本文共 1727 字,大约阅读时间需要 5 分钟。

总时间限制: 
1000ms
内存限制: 
65536kB
描述

给定 n 个闭区间 [ai; bi],其中i=1,2,...,n。任意两个相邻或相交的闭区间可以合并为一个闭区间。例如,[1;2] 和 [2;3] 可以合并为 [1;3],[1;3] 和 [2;4] 可以合并为 [1;4],但是[1;2] 和 [3;4] 不可以合并。

我们的任务是判断这些区间是否可以最终合并为一个闭区间,如果可以,将这个闭区间输出,否则输出no。

输入
第一行为一个整数n,3 ≤ n ≤ 50000。表示输入区间的数量。
之后n行,在第i行上(1 ≤ i ≤ n),为两个整数 ai 和 bi ,整数之间用一个空格分隔,表示区间 [ai; bi](其中 1 ≤ ai ≤ bi ≤ 10000)。
输出
输出一行,如果这些区间最终可以合并为一个闭区间,输出这个闭区间的左右边界,用单个空格隔开;否则输出 no。
样例输入
55 61 510 106 98 10
样例输出
1 10 思路: 刚开始暴力,不行,有多种情况,单边排序还需要双重循环来照顾,果然超时。 然后想到上个火车进站的区间覆盖思路去做,合并成一张表排序,然后找规律 上次那个火车进站是求一个Max,即为相交的最大区间数。加上模拟,进一个出一个。这个合并情况不一样。 只需要判断当sum=0的情况下右边已经不存在l了即可。即遇l加1,遇r减1,不能存在独立的区间 eg:   3   1 2   1 3    4 5 合并排序之后: 1 1 2 3 4 5 l l r r l r 最后一个l出现是sum=0,这种情况就不行的 而 3 1 9 3 4 5 6 合并后 1 3 4 5 6 9 l l r l  r r 这种明显就可以。
#include 
using namespace std;const int maxn = 50000*2+10;struct Node{ int x; char s;} node[maxn];int cmp(Node a,Node b){ if(a.x != b.x) { return a.x < b.x; } else { return a.s < b.s; }}int main(){// freopen("in.txt","r",stdin); int n; while(~scanf("%d",&n)){ for(int i = 0; i < n*2; i++) { scanf("%d",&node[i].x); if((i+1)%2==1) node[i].s = 'l'; else { node[i].s = 'r'; } } sort(node,node+n*2,cmp); int flag = 0; int sum = 1;//默认跳过第一个左区间即可 for(int i = 1; i < n*2; i++) { if(node[i].s == 'l') { if(sum == 0) { flag = 1; } sum++; } else sum--; } if(flag == 1) { puts("no"); } else { printf("%d %d\n",node[0].x,node[n*2-1].x); } } return 0;}

 

转载于:https://www.cnblogs.com/zhangmingzhao/p/7201115.html

你可能感兴趣的文章
中国银行涉嫌洗黑钱却另有隐情?
查看>>
VBA学习笔记(3)-理解Visio Shapesheet
查看>>
排序问题分析
查看>>
红黑树删除操作
查看>>
IntelliJ下使用Code/Live Template加快编码速度:程序员的工作不是写程序,而是写程序解决问题...
查看>>
.NET垃圾回收机制-代(generation)的原理分析
查看>>
Array数组
查看>>
BigDecimal的equals与compareTo
查看>>
定时下载FTP服务器上面的文件到本地
查看>>
HTML图片<img>标签空白解决方法
查看>>
【无私分享:从入门到精通ASP.NET MVC】从0开始,一起搭框架、做项目(9) 角色管理,分配权限...
查看>>
《程序是怎样跑起来的》读书笔记——第八章 从源文件到可执行文件
查看>>
【一句日历】2019年5月
查看>>
服务器端产生大量的close_time
查看>>
自定义从Azure下载回来的远程桌面连接(.rdp)文件,使其提供更多丰富功能
查看>>
c语言高级语言控制成分while,这衣服收费的形式特征有
查看>>
android bitmap 描边,Android 绘图之Canvas相关API使用
查看>>
计算机科学导论计算实例,经典计算计算模型计算机科学导论.ppt
查看>>
如何确定一个网站是用Wordpress开发的
查看>>
爬虫采集-基于webkit核心的客户端Ghost.py [爬虫实例]
查看>>