题干:(Uva题不给题干了)

t组样例,每组首先给出一个M,然后给出一些线段(0 0结束),然后问怎么取能使得最少的线段覆盖区间[0, M]。

Sample Input
2
1
-1 0
-5 -3
2 5
0 0
1
-1 0
0 1
0 0
Sample Output
0
1
0 1

解题报告:

就是个贪心啊

AC代码:

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<queue>
#include<map>
#include<vector>
#include<set>
#include<string>
#include<cmath>
#include<cstring>
#define ll long long
#define pb push_back
#define pm make_pair
#define fi first
#define se second
using namespace std;
const int MAX = 2e5 + 5;
struct Node {int st,ed;Node(){}Node(int st,int ed):st(st),ed(ed){}bool operator<(const Node & b) const{if(st != b.st) return st < b.st;return ed > b.ed;}
} node[MAX];
int tot,n,m,cnt,nb;
int ans[MAX];
int main()
{int t;int a,b,maxx,minn;cin>>t;while(t--) {tot=cnt=0;maxx = 0,minn = 0x3f3f3f3f;scanf("%d",&m);while(scanf("%d%d",&a,&b)) {if(a==0 && b==0) break;if(b<=0) continue;if(a>=m) continue;node[++tot] = Node(a,b);maxx = max(maxx,b);minn = min(minn,a);}sort(node+1,node+tot+1);int cure,curs;curs=cure=0;
//      if(minn >= m || maxx <= 0) {
//          puts("0");
//          if(t) puts("");
//          continue;
//      }int flag = 0;for(int i = 1; i<=tot; ) {if(node[i].st > curs) {break;  }while(i<=tot && node[i].st<=curs) {if(node[i].ed > cure) {cure = node[i].ed;nb = i;}i++;}//if(i!=tot) i--;ans[++cnt] = nb;curs = cure;if(curs >= m) {flag=1;break;}}if(flag == 0) puts("0");else {printf("%d\n",cnt);for(int i = 1; i<=cnt; i++) printf("%d %d\n",node[ans[i]].st,node[ans[i]].ed);}if(t) puts("");}return 0 ;} 

总结: 那两句读数据的时候的if去掉好像也可以AC,,反正注释掉的那一部分加上也可以AC。。

【UVA - 10020 】Minimal coverage (贪心,区间覆盖问题)相关推荐

  1. UVA 10020 Minimal coverage

    大意:数轴上有n个闭区间[ai,bi],选择尽量少的区间覆盖一条指定的线段[s,t]. 思路:贪心,具体见刘汝佳白书P154.把各区间按照a从小到大排序.如果区间1的起点不是s,无解,否则选择起点在s ...

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

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

  3. 贪心 区间覆盖最小值

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

  4. 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 ...

  5. 贪心---区间覆盖问题(水题)

    区间覆盖问题 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 设x1 , x2 ,-- , xn 是实直线上的n 个点. ...

  6. Minimal coverage (贪心,最小覆盖)

    题目大意:先确定一个M, 然后输入多组线段的左端和右端的端点坐标,然后让你求出来在所给的线段中能够 把[0, M] 区域完全覆盖完的最少需要的线段数,并输出这些线段的左右端点坐标. 思路分析: 线段区 ...

  7. UVa 10020 (最小区间覆盖) Minimal coverage

    题意: 数轴上有n个闭区间[ai, bi],选择尽量少的区间覆盖一条指定线段[0, m] 算法: [start, end]为已经覆盖到的区间 这是一道贪心 把各个区间先按照左端点从小到大排序,更新st ...

  8. *【UVA - 10382】Watering Grass(贪心,区间覆盖问题,思维)

    题干: 题目大意: 有一块草坪,长为l,宽为w,在它的水平中心线上有n个位置可以安装喷水装置,各个位置上的喷水装置的覆盖范围为以它们自己的半径ri为圆.求出最少需要的喷水装置个数,如果无论如何都不能覆 ...

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

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

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

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

最新文章

  1. REDHAT6.4桌面环境添加快捷建打开命令行终端
  2. Java IO: System.in, System.out, System.err
  3. 机器学习中常见的过拟合解决方法
  4. Python正在勒死R吗?
  5. Android studio libs目录
  6. Spring及SpringBoot @Async配置步骤及注意事项
  7. 和一个刚毕业不久的朋友聊天
  8. Windows 64 位 mysql 5.7.20 安装教程
  9. myeclipse copy问题
  10. 装饰模式(Decorate Pattern)
  11. word文件批量转换为txt文档
  12. java中tab键_Java 9中的JShell中Tab键的用途是什么?
  13. 期刊检索级别简单介绍
  14. BBR: Congestion-based congestion control
  15. B站视频最新下载方法
  16. TypeError: _typeof4 is not a function,解决微信小程序报错
  17. iphone 代码片段2
  18. 贝壳找房户外拓展(中等) 扫描线
  19. 如何做好地质旅游景区的策划规划和投资开发?
  20. Git 使用cherry-pick摘取提交

热门文章

  1. [Leedcode][JAVA][第105题][从前序与中序遍历序列构造二叉树][栈][递归][二叉树]
  2. [剑指offer]面试题第[42]题[Leedcode][JAVA][第53题][最大子序和][动态规划][贪心][分治]
  3. [剑指offer]面试题第[7]题[JAVA][斐波那契数列][递归]
  4. HDU - 4586 数学期望
  5. python爬虫数据可视化_python 爬虫与数据可视化--python基础知识
  6. 电脑二维码怎么扫描_扫描模组方案是如何满足多种应用场景需求?
  7. B. File List
  8. ddns客户端_DDNS哪家最方便?试试看Mikrotik的ROS!
  9. 中职计算机说课稿三篇,精选中职计算机说课稿三篇-20210609060707.docx-原创力文档...
  10. linux中线程的挂起与恢复(进程暂停)