来源:http://poj.org/problem?id=1089

题意:就是给你一些区间,若两个区间能够合并,则合并。求最后又多少个区间,输出最后的区间。

思路:其实就是一个贪心的题目,不过要想做到1A还是有点困难的。有许多情况需要考虑清楚,我也是wa了几次才过的。我们可以先按开始端点从小到大排序,若开始端点相等,则按结尾端点从小到大排序。排序之后能合并则合并。合并的时候有两种情况,一种是起点和开始点的起点一样,但是终点比开始点的终点大,这种情况需要考虑;另一种就是开始点小于等于起点的结束点。在合并的过程中,起点的结尾点需要一直不断的更新。

代码:

#include <iostream>
#include <cstdio>
#include <string.h>
#include <climits>
#include <algorithm>
using namespace std;#define CLR(arr,val) memset(arr,val,sizeof(arr))
const int N = 50010;
struct interval{int st,et;
}aa[N];
int flag[N];
bool cmp(interval a,interval b){if(a.st == b.st )return a.et < b.et;return a.st < b.st;
}
int max(int a,int b){return a > b ? a : b;
}
int main(){//freopen("1.txt","r",stdin);int n;while(scanf("%d",&n) != EOF){for(int i = 0;i < N; ++i){aa[i].st = aa[i].et = INT_MAX;}CLR(flag,0);for(int i = 0; i < n; ++i)scanf("%d%d",&aa[i].st,&aa[i].et);sort(aa,aa+n,cmp);int id;for(int i = 0; i < n; ){id = i;printf("%d ",aa[id].st);while(aa[i+1].st == aa[id].st){i++;}aa[id].et = aa[i].et;while(aa[i+1].st <= aa[id].et){i++;if(aa[i].et > aa[id].et)aa[id].et = aa[i].et;}if(aa[i].et > aa[id].et)aa[id].et = aa[i].et;printf("%d\n",aa[id].et);i++;}      }return 0;
}

转载于:https://www.cnblogs.com/javaspring/archive/2012/08/25/2656255.html

POJ 1089 Intervals 区间覆盖+ 贪心相关推荐

  1. poj 1089 Intervals

    先上题目 源链接 There is given the series of n closed intervals [ai; bi], where i=1,2,-,n. The sum of those ...

  2. 三类基于贪心思想的区间覆盖问题

    一.区间完全覆盖问题 问题描述:给定一个长度为m的区间,再给出n条线段的起点和终点(注意这里是闭区间),求最少使用多少条线段可以将整个区间完全覆盖. 样例:一个长度为8的区间,可选的线段有[2,6], ...

  3. 贪心 区间覆盖最小值

    贪心 区间覆盖最小值 POJ 2376 大概题意: 从1到T区间内,必须保证每个点都有牛在工作,给出每头牛的工作时间,求需用到的最小的牛的数量,无解输出-1 一开始以为组合[1,4] [5,T]不算覆 ...

  4. 高效算法——E - 贪心-- 区间覆盖

    E - 贪心-- 区间覆盖 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=85904#problem/E 解题思路: 贪心思想, ...

  5. 区间覆盖全部类型及部分精选习题汇总详解(贪心策略)

    内容如下: 1)区间完全覆盖问题 问题描述:给定一个长度为m的区间,再给出n条线段的起点和终点(注意这里是闭区间),求最少使用多少条线段可以将整个区间完全覆盖 样例: 区间长度8,可选的覆盖线段[2, ...

  6. sdut 2074 区间覆盖问题(贪心)

    区间覆盖问题 Time Limit: 1000MS Memory limit: 65536K 题目描述 用i来表示x坐标轴上坐标为[i-1,i]的长度为1的区间,并给出n(1≤M≤200)个不同的整数 ...

  7. 贪心法——区间覆盖问题

    贪心法--区间覆盖问题 区间覆盖问题.数轴上有n个闭区间[ai,bi][a_i, b_i],选择尽量少的区间覆盖一条指定线段[s,t][s,t]. 先进行预处理,将不包含[s,t][s,t]的区间都去 ...

  8. Algorithm:贪心策略之区间覆盖问题

    Describe: 给定一个大区间1-T,以及n个小区间,要求用最少个数的小区间来覆盖大区间: Input: 第一行,输入n和T: 随后n行输入对应区间的起始终止坐标 Output: 输出覆盖区间1- ...

  9. 【算法笔记】:区间覆盖问题:贪心算法

    证明贪心算法的正确性: 下面证明: (1)最优子结构: 假设结果有n个区间,去掉最后一个区间及对应的点,则前n-1个区间仍然是覆盖所有点的所用的最少区间(最优解的子结构是子问题的最优解) 证明: cu ...

  10. 10382 - Watering Grass(贪心 区间覆盖问题)洒水面覆盖

    double qiuzhi(int id) {double t1=cc[id].rid*cc[id].rid;double t2=w*w/4;double t3=t1-t2;double t4=sqr ...

最新文章

  1. databinding学习(1)
  2. makefile ifneq多个判断条件_一文入门Makefile
  3. Laravel——消息通知
  4. bat 服务启动脚本
  5. java pattern用法_Java Pattern和Matcher用法
  6. 再次搬家到自建博客http://www.wikieee.com/blog/leiad/homepage
  7. node-sass报错解决方法
  8. Android睡眠唤醒机制--Kernel态
  9. Judge whether the user is in some windows group.
  10. mirbase数据库简介
  11. python小玩意——敏感词汇检测
  12. tomcat启动过程报the JDBC Driver has been forcibly unregistered问题的修复过程
  13. 相关系数excel_给你一份数据,如何去分析?手把手教你用Excel进行数据分析
  14. 自定义滚动条(css)
  15. App上架时,华为应用市场提示:在测试环境:Wi-Fi联网、EMUI11.0 ( P40),软件存在闪退。如何模拟EMUI11.0 ( P40)
  16. python画多边形(八边形)
  17. c语言程序设计学校运动会管理系统,C++实现学校运动会管理系统
  18. stm32正常运行流程图_深度分析:主流32位单片机为什么要学STM32?-可编程逻辑-与非网...
  19. thinkcmf5 数据备份、恢复
  20. 初学者使用html制作的一个新闻页面

热门文章

  1. Mac怎么合并文件夹
  2. SFB 项目经验-15-配置会议邀请中企业信息
  3. t_user is not mapped [from t_user as u where u.loginname = :loginname and u.password =:password]
  4. javascript在使用时要注意的东西
  5. 使用Jsoup 抓取页面的数据
  6. J2EE 领域的一些技术框架结构图
  7. 老大:用脚本实现Nginx日志每天切分的功能?我:脱了裤子放屁!
  8. 百度又一OCR神器面世!速度提升220%。网友:这也太猛了...
  9. 你还在手写 CRUD?试试 MybatisGenerator,再也不用加班了!
  10. v2ex热帖:面了几个程序员(3-5年),发现他们对MySQL的distinct关键字有误解......