关闭

vijos1439 区间 (排序)

标签: vijos1439区间排序
626人阅读 评论(0) 收藏 举报
分类:

P1439区间

背景

描述

给定n个闭区间 [ai,bi], i=1,2,...,n. 这些区间的和可以用两两不相交的闭区间的和来表示。你的任务是找到这样的区间数目最少的表示,且把它们按升序的方式写到输出文件中。当且仅当a <= b < c <= d时,区间[a; b] 、[c; d]才是升序
写一个程序完成以下任务:
读取区间
计算出满足上述条件的两两不相交的区间
把找到的区间按升序输出

格式

输入格式

第一行只有一个数n, 3 <= n <= 50000,代表区间数.第I+1行有两个数ai,bi,之间用一个空格隔开,分别表示区间[ai,bi]的起始和结束(1 <= i <= n),1 <= ai <= bi <= 1000000

输出格式

输出文件应该包含计算出的所有区间,每行写一个区间,每行只有两个数,分别是区间起始和结束,之间用一个空格分开。记住必须是按升序输出。

样例1

样例输入1[复制]

5 
5 6 
1 4
10 10
6 9
8 10

样例输出1[复制]

1 4
5 10

限制

各个测试点1s

提示


代码:

#include<cstdio>
#include<algorithm>
using namespace std;

const int maxn=5e4;
struct tnode{
	int x,y;
}p[maxn+10];

bool cmp_p(tnode a,tnode b)
{
  return a.x<b.x;
}

int main()
{
 // freopen("1.in","r",stdin);
  
  int n,i,l,r;
  scanf("%d",&n);
  for(i=1;i<=n;i++)
    scanf("%d%d",&p[i].x,&p[i].y);
  sort(p+1,p+n+1,cmp_p);
  l=p[1].x,r=p[1].y;
  for(i=2;i<=n;i++)
    if(p[i].x>r)
      {
        printf("%d %d\n",l,r);
        l=p[i].x,r=p[i].y;
      }
	else
	  r=max(p[i].y,r);
  printf("%d %d\n",l,r);
  return 0;
}



0
0
查看评论

算法导论7.6对区间的模糊排序

题目: 7-6 对区间的模糊排序     考虑这样的一种排序问题,即无法准确地知道待排序的各个数字到底是多少。对于其中的每个数字,我们只知道它落在实轴上的某个区间。亦即,给定的是n个形如[ai,bi]的闭区间,其中ai≤bi。算法的目标是对这些区间进行模糊排...
  • leolinsheng
  • leolinsheng
  • 2013-05-13 13:11
  • 1877

算法导论 7-6 对区间的模糊排序

一、题目 考虑这样一种排序问题,即无法准确的知道等排序的各个数字到底是多大.对于其中的每个数字,我们只知道它落在实轴上的某个区间内.亦即,给定的 n 个形如[ai, bi ]的闭区间,其中ai,≤bi .算法的目标是对这些区间进行模糊排序(fuzzy-sort),亦即,产生各...
  • mishifangxiangdefeng
  • mishifangxiangdefeng
  • 2012-06-21 09:19
  • 3271

C++标准库中的查找函数之有序区间的函数

地点:基地 时间:2014.04.01 -------------------------------------------------------------------------- 一、概述 用于有序区间的函数有一下三个,每种方法都使用了两个指针first和last,用于限制元素的域...
  • u012333003
  • u012333003
  • 2014-04-01 20:57
  • 822

LintCode--插入区间

LintCode --插入区间 给出一个无重叠的按照区间起始端点排序的区间列表。 在列表中插入一个新的区间,你要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。
  • ljq140421
  • ljq140421
  • 2017-09-08 17:53
  • 228

九章算法面试题77 插入区间

原网址: http://www.jiuzhang.com/problem/78/ 问题详情  给出一个无重叠的按照区间起始端点排序的区间列表。 在列表中插入一个新的区间,你要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。 在线评测本题: http://w...
  • JiuZhang_ninechapter
  • JiuZhang_ninechapter
  • 2015-07-18 10:07
  • 1196

按区间分组,按毛利率排序问题

我有一个表a,里面有三个字段,股票id,成本,收益毛利率的计算公式是mao=(成本-收益)/成本现在需要按照2个区间得到股票排名的名次0.1<mao≤1 mao≤0.1 也就是说假如毛利率那么股票的排名的名次分别是1~500和1~1500  SELECT aa.*, &...
  • zhiguo2010
  • zhiguo2010
  • 2010-05-26 18:41
  • 488

快速排序中的区间划分

快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。该方法的基本思想是: 1.先从数列中取出一个数作为基准数。 2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。 3.再对左右区间重复第二步,直到各区间只有一个数。 算法的思路很清晰,但是如果在区间划分过程...
  • JieTouLangRen
  • JieTouLangRen
  • 2014-01-04 16:08
  • 2052

【HDU5649 BestCoder Round 76 (div1)D】【二分+线段树】DZY Loves Sorting 全排列1~n 区间升序降序排序 最后k位置的数是几

DZY Loves Sorting Accepts: 6 Submissions: 8 Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) 问题描述 DZY有一个数列a[...
  • snowy_smile
  • snowy_smile
  • 2016-03-20 10:05
  • 628

(p106)对区间的模糊排序(将相同元素挤在一起的快排)

这里定义区间a /* * sort.c * * Created on: Feb 13, 2016 * Author: wing */ #include #include struct line{ int l; int r; }; int exchange(struct l...
  • u010327109
  • u010327109
  • 2016-02-13 23:14
  • 463

lintcode-插入区间

给出一个无重叠的按照区间起始端点排序的区间列表。 在列表中插入一个新的区间,你要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。 您在真实的面试中是否遇到过这个题? 样例 插入区间[2, 5] 到 [[1,2], [5,9]],我们得到 [[1,9]]。 ...
  • ljlstart
  • ljlstart
  • 2015-09-08 00:26
  • 1062
    个人资料
    • 访问:284975次
    • 积分:6419
    • 等级:
    • 排名:第4482名
    • 原创:353篇
    • 转载:59篇
    • 译文:0篇
    • 评论:31条
    最新评论