POJ 1089 Intervals 区间覆盖+ 贪心
来源: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 区间覆盖+ 贪心相关推荐
- poj 1089 Intervals
先上题目 源链接 There is given the series of n closed intervals [ai; bi], where i=1,2,-,n. The sum of those ...
- 三类基于贪心思想的区间覆盖问题
一.区间完全覆盖问题 问题描述:给定一个长度为m的区间,再给出n条线段的起点和终点(注意这里是闭区间),求最少使用多少条线段可以将整个区间完全覆盖. 样例:一个长度为8的区间,可选的线段有[2,6], ...
- 贪心 区间覆盖最小值
贪心 区间覆盖最小值 POJ 2376 大概题意: 从1到T区间内,必须保证每个点都有牛在工作,给出每头牛的工作时间,求需用到的最小的牛的数量,无解输出-1 一开始以为组合[1,4] [5,T]不算覆 ...
- 高效算法——E - 贪心-- 区间覆盖
E - 贪心-- 区间覆盖 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=85904#problem/E 解题思路: 贪心思想, ...
- 区间覆盖全部类型及部分精选习题汇总详解(贪心策略)
内容如下: 1)区间完全覆盖问题 问题描述:给定一个长度为m的区间,再给出n条线段的起点和终点(注意这里是闭区间),求最少使用多少条线段可以将整个区间完全覆盖 样例: 区间长度8,可选的覆盖线段[2, ...
- sdut 2074 区间覆盖问题(贪心)
区间覆盖问题 Time Limit: 1000MS Memory limit: 65536K 题目描述 用i来表示x坐标轴上坐标为[i-1,i]的长度为1的区间,并给出n(1≤M≤200)个不同的整数 ...
- 贪心法——区间覆盖问题
贪心法--区间覆盖问题 区间覆盖问题.数轴上有n个闭区间[ai,bi][a_i, b_i],选择尽量少的区间覆盖一条指定线段[s,t][s,t]. 先进行预处理,将不包含[s,t][s,t]的区间都去 ...
- Algorithm:贪心策略之区间覆盖问题
Describe: 给定一个大区间1-T,以及n个小区间,要求用最少个数的小区间来覆盖大区间: Input: 第一行,输入n和T: 随后n行输入对应区间的起始终止坐标 Output: 输出覆盖区间1- ...
- 【算法笔记】:区间覆盖问题:贪心算法
证明贪心算法的正确性: 下面证明: (1)最优子结构: 假设结果有n个区间,去掉最后一个区间及对应的点,则前n-1个区间仍然是覆盖所有点的所用的最少区间(最优解的子结构是子问题的最优解) 证明: cu ...
- 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 ...
最新文章
- databinding学习(1)
- makefile ifneq多个判断条件_一文入门Makefile
- Laravel——消息通知
- bat 服务启动脚本
- java pattern用法_Java Pattern和Matcher用法
- 再次搬家到自建博客http://www.wikieee.com/blog/leiad/homepage
- node-sass报错解决方法
- Android睡眠唤醒机制--Kernel态
- Judge whether the user is in some windows group.
- mirbase数据库简介
- python小玩意——敏感词汇检测
- tomcat启动过程报the JDBC Driver has been forcibly unregistered问题的修复过程
- 相关系数excel_给你一份数据,如何去分析?手把手教你用Excel进行数据分析
- 自定义滚动条(css)
- App上架时,华为应用市场提示:在测试环境:Wi-Fi联网、EMUI11.0 ( P40),软件存在闪退。如何模拟EMUI11.0 ( P40)
- python画多边形(八边形)
- c语言程序设计学校运动会管理系统,C++实现学校运动会管理系统
- stm32正常运行流程图_深度分析:主流32位单片机为什么要学STM32?-可编程逻辑-与非网...
- thinkcmf5 数据备份、恢复
- 初学者使用html制作的一个新闻页面
热门文章
- Mac怎么合并文件夹
- SFB 项目经验-15-配置会议邀请中企业信息
- t_user is not mapped [from t_user as u where u.loginname = :loginname and u.password =:password]
- javascript在使用时要注意的东西
- 使用Jsoup 抓取页面的数据
- J2EE 领域的一些技术框架结构图
- 老大:用脚本实现Nginx日志每天切分的功能?我:脱了裤子放屁!
- 百度又一OCR神器面世!速度提升220%。网友:这也太猛了...
- 你还在手写 CRUD?试试 MybatisGenerator,再也不用加班了!
- v2ex热帖:面了几个程序员(3-5年),发现他们对MySQL的distinct关键字有误解......