题目链接:http://poj.org/problem?id=2376

题目大意:选择一些区间使得能够覆盖1-T中的每一个点,并且区间数最少

题目分析:这道题目很明显可以用贪心法来解决。但题目没有看起来那么简单,有许多的坑。

我的贪心策略如下:

1.将区间按照起点排序,并且保证起点相同的,终点大的排在前边

2.在前一个选取的区间范围[L0,R0+1]中,选取起点在此范围但终点最靠右的一个区间

3.重复这个过程

另外,还有几点需要注意的地方:

1.要保证第一个区间起点和最后一个区间终点符合1-L的条件

2.前一个区间的终点可以不与后一个区间的起点重合

代码如下:

#include <iostream>
#include <algorithm>
using namespace std;
struct Line{
int x,y;
}A[ + ];
bool cmp(const Line& l1, const Line& l2){
if(l1.x == l2.x) return l1.y > l2.y;
return l1.x < l2.x;
}
int main(){
ios::sync_with_stdio(false);
int N, T;
while(cin >> N >> T){
for(int i = ; i < N; i++)
cin >> A[i].x >> A[i].y;
sort(A, A + N, cmp);
int i = , cnt = , ok = ;
if(A[i].x > )ok = ;
else while(i < N - && A[i].y < T){
int t = i;
for(int j = i + ; j < N &&A[j].x <= A[i].y+; j++)
if(A[j].y > A[t].y) t = j;
if(t == i){
ok = ;
break;
}
else i = t, cnt++;
}
if(A[i].y < T) ok = ;
if(ok)cout << cnt << endl;
else cout << - << endl;
}
return ;
}

POJ 2376 (区间问题,贪心)的更多相关文章

  1. POJ 2376 Cleaning Shifts (贪心,区间覆盖)

    题意:给定1-m的区间,然后给定n个小区间,用最少的小区间去覆盖1-m的区间,覆盖不了,输出-1. 析:一看就知道是贪心算法的区间覆盖,主要贪心策略是把左端点排序,如果左端点大于1无解,然后, 忽略小 ...

  2. POJ - 2376 Cleaning Shifts 贪心(最小区间覆盖)

    Cleaning Shifts Farmer John is assigning some of his N (1 <= N <= 25,000) cows to do some clea ...

  3. poj 2376 Cleaning Shifts 贪心 区间问题

    <pre name="code" class="html"> Cleaning Shifts Time Limit: 1000MS   Memory ...

  4. POJ 2376 Cleaning Shifts 贪心

    Cleaning Shifts 题目连接: http://poj.org/problem?id=2376 Description Farmer John is assigning some of hi ...

  5. POJ 2376 Cleaning Shifts【贪心】

    POJ 2376 题意: 给出一给大区间和n各小区间,问最少可以用多少小区间覆盖整个大区间. 分析: 贪心法.设t为当前所有已确定区间的最右端,那我们可以每次都取所有可选的小区间(左端点<=t+ ...

  6. POJ 2376 Cleaning Shifts(轮班打扫)

    POJ 2376 Cleaning Shifts(轮班打扫) Time Limit: 1000MS   Memory Limit: 65536K [Description] [题目描述] Farmer ...

  7. POJ 3190 Stall Reservations贪心

    POJ 3190 Stall Reservations贪心 Description Oh those picky N (1 <= N <= 50,000) cows! They are s ...

  8. POJ 2392 Space Elevator(贪心+多重背包)

    POJ 2392 Space Elevator(贪心+多重背包) http://poj.org/problem?id=2392 题意: 题意:给定n种积木.每种积木都有一个高度h[i],一个数量num ...

  9. 贪心问题:区间覆盖 POJ 2376 Cleaning Shift

    题目:http://poj.org/problem?id=2376 题意:就是 N 个区间, 输入 N 个区间的 [begin, end],求能用它们覆盖区间[1,T]的最小组合. 题解: 1. 首先 ...

随机推荐

  1. Ubuntu如何挂载U盘

    1. 以root用户登陆 2. 查看当前挂载 fdisk -l 一般情况未挂载的硬盘都在最后,这里是/dev/sdb1 3.新建一个目录来挂载硬盘 挂载到MNT/usb root@h-Default- ...

  2. Python中级 —— 06SMTP发送电子邮件

    Email的历史比Web还要久远,直到现在,Email也是互联网上应用非常广泛的服务.(未完)

  3. Elasticsearch入门和查询语法分析(ik中文分词)

    全文搜索现在已经是很常见的功能了,当然你也可以用mysql加Sphinx实现.但开源的Elasticsearch(简称ES)目前是全文搜索引擎的首选.目前像GitHub.维基百科都使用的是ES,它可以 ...

  4. php 二位数组排序

    $member_ship_level 是一个二维数组 $res = array_column($member_ship_level,'integral'); array_multisort($res, ...

  5. rails + MySQL 存储emoji表情 😯

    database.yml 加入 charset: utf8mb4 encoding: utf8mb4 collation: utf8mb4_unicode_ci 创建migration ,更改要存放表 ...

  6. mysql5.6升级为mysql5.7部署jboss/wildfly应用项目

    一.部署mysql5.7二进制版 解压tar -xvf mv mysql-5.7  /usr/local/mysql5.7  或者其他文件夹 cd  /usr/local/mysql.57 usera ...

  7. mysql secure_file_priv 文件读写问题

    secure_file_priv特性 使用 show global variables like '%secure%'; 查询显示 secure_file_priv的值为null,那么secure_f ...

  8. Java ArrayList 源代码分析

    Java ArrayList 之前曾经参考 数据结构与算法这本书写过ArrayList的demo,本来以为实现起来都差不多,今天抽空看了下jdk中的ArrayList的实现,差距还是很大啊 首先看一下 ...

  9. Linux入门进阶第二天——软件安装管理(上)

    一.大纲介绍 这里介绍的仅仅是两大家族之一的RPM,关于Debian家族的DPKG,请参考:http://justcoding.iteye.com/blog/1937171 二.简介 软件包分类: 源 ...

  10. 20155319 2016-2017-2 《Java程序设计》第十周学习总结

    20155319 2016-2017-2 <Java程序设计>第十周学习总结 教材学习内容总结 计算机网络编程概述 网络编程就是两个或多个设备之间的数据交换,其实更具体的说,网络编程就是两 ...