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

题意:就是 N 个区间, 输入 N 个区间的 [begin, end],求能用它们覆盖区间[1,T]的最小组合。

题解:

1. 首先对所有奶牛的排序,按照开始时间升序排序。

2. 更新 起点 为 上一次的终点 + 1,并寻找覆盖起点,且终点最远的区间

#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <algorithm>
using namespace std; const int maxn = + ;
typedef long long LL; int N;
LL T; struct Works {
int start,
end;
Works(int s = , int e = ) : start(s), end(e) {}
} works[maxn]; bool cmp(const Works& a, const Works& b)
{
return a.start < b.start || (a.start == b.start && a.end > b.end);
} void solve()
{
cin >> N >> T; for (int i = ; i < N; i++)
{
scanf("%d%d", &works[i].start, &works[i].end);
} sort(works, works + N, cmp); int ans = ;
int current_sum = ;
bool flag = true;
while (current_sum < T)
{
int begin = current_sum + ; for (int i = ; i < N; i++)
{
//寻找能够能覆盖起点的牛
if (works[i].start <= begin) {
//是否能覆盖起点
if (works[i].end >= begin) {
//寻找 最远的 终点
current_sum = max(current_sum, works[i].end);
}
}
}
//没有找到这样的牛
if (begin > current_sum) {
flag = false;
break;
}
else {
ans++;
}
}
if (flag) {
printf("%d\n", ans);
} else {
printf("-1\n");
}
} int main()
{
solve();
return ;
}

贪心问题:区间覆盖 POJ 2376 Cleaning Shift的更多相关文章

  1. 贪心问题:区间覆盖 POJ 1328 Rader Installation

    题目:http://poj.org/problem?id=1328 题意:给定海岛个数,雷达半径,输入各个海岛坐标,求能覆盖所有海岛的最少雷达数 题解: 1. 贪心的区间覆盖问题,尽量让每个雷达覆盖更 ...

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

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

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

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

  4. POJ 2376 Cleaning Shifts 区间覆盖问题

    http://poj.org/problem?id=2376 题目大意: 给你一些区间的起点和终点,让你用最小的区间覆盖一个大的区间. 思路: 贪心,按区间的起点找满足条件的并且终点尽量大的. 一开始 ...

  5. poj 2376 Cleaning Shifts(贪心)

    Description Farmer John <= N <= ,) cows to <= T <= ,,), the first being shift and the la ...

  6. POJ 2376 Cleaning Shifts【贪心】

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

  7. poj 2376 Cleaning Shifts

    http://poj.org/problem?id=2376 Cleaning Shifts Time Limit: 1000MS   Memory Limit: 65536K Total Submi ...

  8. 贪心算法----区间覆盖问题(POJ2376)

    题目: 题目的大概意思是约翰这个农民有N条牛,这些牛可以在一天中的某个时间段可以进行工作,他想把这个时间段分成若干个片段让这些牛去进行打扫任务,你的任务是安排尽量少的牛然后可以完成分成这些片段的打扫任 ...

  9. NYOJ 12:喷水装置(二)(贪心,区间覆盖问题)

    12-喷水装置(二) 内存限制:64MB 时间限制:3000ms 特判: No 通过数:28 提交数:109 难度:4 题目描述: 有一块草坪,横向长w,纵向长为h,在它的橫向中心线上不同位置处装有n ...

随机推荐

  1. Java 反射 不定参数bug

    遇到的第一个关于反射的bug:java.lang.IllegalArgumentException: wrong number of arguments的问题解析如下: 1.错误bug wrong n ...

  2. MAVEN教程--01安装|创建|解释

    Maven是一个采用纯Java编写的开 源项目管理工具.Maven采用了一种被称之为project object model (POM)概念来管理项目,所有的项目配置信息都被定义在一个叫做POM.xm ...

  3. HttpContext.Current.Server.MapPath("/") 未将对象设置到对象的实例异常。

    多线程中的System.Web.HttpContext.Current.Server.MapPath("/") 多线程中Server.MapPath会失效... 网上找到几种解决方 ...

  4. DPDK实例程序:testpmd

    用户手册:https://doc.dpdk.org/guides/testpmd_app_ug/index.html 还不错的入门:http://syswift.com/188.html 我的运行情况 ...

  5. eg_7

    1. 给定Map,根据Map中的值从大到小排列 package com.studentmanager.www; import java.util.ArrayList; import java.util ...

  6. week4c:个人博客作业

    6.具体程序: #include<stdio.h>#include<stdlib.h>#include<math.h>void Udecide_n();int De ...

  7. CentOS下Neo4j安装教程

    本文记录一下在CentOS 6.7上,安装neo4j图数据库,本文安装的版本为neo4j-community-2.3.9-unix.tar.gz. 下载Neo4j安装包 使用wget命令获取Neo4j ...

  8. Linux 压缩 解压缩 命令相关

    1.命令格式:tar[必要参数][选择参数][文件] 2.命令功能:用来压缩和解压文件.tar本身不具有压缩功能.他是调用压缩功能实现的 3.命令参数:必要参数有如下:-A 新增压缩文件到已存在的压缩 ...

  9. 使用Fiddler后谷歌浏览器访问https不安全

    今天初次接触java爬虫,师兄给了一个软件加一个demo,软件是Fiddler,在网上找资料稍微学习了一下,自己一顿乱配...然后gg,谷歌浏览器访问https协议时都提示不安全,“您的链接不是一个私 ...

  10. Ubuntu 14.04(64bit)使用indicator-sysmonitor显示系统运行状态

    原帖位置:http://tieba.baidu.com/p/3005287033 在使用ubutu时,如果可以查看当前系统使用情况,如CPU,内存,网速等是非常爽的,今天就讲一下一个系统运行状态显示软 ...