1089 Intervals

2024-04-28 18:48
文章标签 intervals 1089

本文主要是介绍1089 Intervals,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目大意:

给定n个区间,求他们的并,用最少的区间表示

考虑2个区间的位置关系,只有5种

先按区间左端点增序排

从左到右O(n)扫一遍

第i个区间右端点比当前处理区间右端点大,而且他们相交,则更新当前处理区间的右端点

第i个区间和当前处理区间不交,则产生新区间,输出,并更新当前处理区间的左右端点

  1. //4471891_AC_125MS_792K
  2. /**********************************************************************
  3. *       Online Judge   : POJ
  4. *       Problem Title  : Intervals
  5. *       ID             : 1089
  6. *       Date           : 12/10/2008
  7. *       Time           : 7:47:11
  8. *       Computer Name  : EVERLASTING-PC
  9. ***********************************************************************/
  10. #include<iostream>
  11. #include<algorithm>
  12. using namespace std;
  13. #define MAXN 50000
  14. struct Interval
  15. {
  16.     int s,e;
  17. };
  18. bool cmp(Interval a,Interval b)
  19. {
  20.     return a.s<b.s;
  21. }
  22. Interval a[MAXN];
  23. int n,ss,ee;
  24. int main()
  25. {
  26.     //freopen("in_1089.txt","r",stdin);
  27.     while (scanf("%d",&n)!=-1)
  28.     {
  29.         for (int i=0;i<n;++i)
  30.         {
  31.             scanf("%d%d",&a[i].s,&a[i].e);
  32.         }
  33.         sort(a,a+n,cmp);
  34.         ss=a[0].s;
  35.         ee=a[0].e;
  36.         for (int i=1;i<n;++i)
  37.         {
  38.             if (a[i].s<=ee&&ee<a[i].e)
  39.             {
  40.                 ee=a[i].e;
  41.             }
  42.             else if(ee<a[i].s)
  43.             {
  44.                 printf("%d %d/n",ss,ee);
  45.                 ss=a[i].s;
  46.                 ee=a[i].e;
  47.             }
  48.         }
  49.         printf("%d %d/n",ss,ee);
  50.     }
  51.     return 0;
  52. }

这篇关于1089 Intervals的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/943977

相关文章

leetcode 刷题之路 32 Merge Intervals

Given a collection of intervals, merge all overlapping intervals. For example, Given [1,3],[2,6],[8,10],[15,18], return [1,6],[8,10],[15,18]. 给定一组整数对代表的区间,合并重合的区间。 我的做法是首先以区间的起始位置为基准进行排序,遍历排序后的

【LeetCode】Merge Intervals Insert Interval

1、Merge Intervals Total Accepted: 6989 Total Submissions: 34958 My Submissions Given a collection of intervals, merge all overlapping intervals. For example, Given [1,3],[2,6],[8,10],[15,18],

1089:数字反转

1089:数字反转 时间限制: 1000 ms         内存限制: 65536 KB 提交数:115082    通过数: 61304 【题目描述】 给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零,例如输入−380,反转后得到的新数为−83。 【输入】 输入共 1 行,一个整数N。 −

Help with Intervals 线段树并查集

Time Limit: 6000MS Memory Limit: 131072KTotal Submissions: 9784 Accepted: 2320Case Time Limit: 2000MS Description

Python区间库python-intervals

前阵项目有个范围需求,最开始用的range,但是没法处理连续的。然后搜了一下果然有轮子,不过最开始搜中文搜到的大多是interval这个库, pypi地址:https://pypi.org/project/interval/#description。 链接的官网都打不开了,文档啥的也没了,而且实测再Python3下无限区间有点问题。   接着又搜到python-intervals这个库,这

leetcode oj java 56. Merge Intervals

一、问题描述: Given a collection of intervals, merge all overlapping intervals. For example, Given [1,3],[2,6],[8,10],[15,18], return [1,6],[8,10],[15,18]. 二、解决思路: 针对间隔,按照start从小到大排序。(重写了sort方法)

hdu1384 poj1202 Intervals --- 差分约束

差分约束系统 差分约束系统的应用难点在于将实际问题转换为差分约束系统。 简单来说,要构造出一系列满足题意的不等式 形如 Si-Sj<=Ck,且必须含等号。 对于每一个这样的不等式,构造有向边 w(j->i)=Ck。 为保证图的连通,我们引入附加结点Vs。初始化w(s->i)=0,d[Vs]=0 接下来就是求解源点到其他点的单源最短路径。 由于差分约束系统中通常含负值,所以我

LeetCode 题解(3):Merge Intervals

题目: Given a collection of intervals, merge all overlapping intervals. For example, Given [1,3],[2,6],[8,10],[15,18], return [1,6],[8,10],[15,18]. 题解: /*** Definition for an interval.* struct I

**LeetCode 56. Merge Intervals

https://leetcode.com/problems/merge-intervals/ 虽然是Hard  但是并不难,但是WA了 问题在于 自己没有好好动手模拟,选择的分隔的标准有问题 方法一: 线段树涂色问题 方法二: 先把区间按照左端点排序 左端点一样就按照右端点排序,然后st en分别标记当前的区间,如果发现interval[i+1]>st 就存入ret,更新St和en

poj 1201 intervals

题目链接:点击打开链 Description You are given n closed, integer intervals [ai, bi] and n integers c1, ..., cn.  Write a program that:  reads the number of intervals, their end points and integers c1, ...