poj 2376 选择工作区间问题 贪心算法
题意:给一些工作区间,如何选取最小的工作数量,覆盖[1,T]的工作时长
一开始的思路,当然也是错误的思路:
- 我想着,最小工作数量是吧?那肯定就是选择结束时间最晚的,给结束时间来一个排序。哎这个思路错误的离谱...
解题思路:
- 标记起点,当然对提供的工作区间,按开始的时间从小到大排序。
- 对能够覆盖起点(即可选的工作区域),选择结束时间最晚的(即工作时长最长的)
- 更新起点
代码中的小技巧
主要针对第二个解题思路:
- 可选区域:i<n&&node[i].start<=T+1 --i表示当前循环的工作序号没有超过n,第二个判断语句就是指,当前工作的开始时间小于等于标记的起点+1才可以被选
while(i<n&&node[i].start<=T+1) { end=max(end,node[i].end); i++;}
解题代码:
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <math.h>
using namespace std;
struct Cow
{
int b, e;
}cow[];
int cmp(Cow a, Cow b)
{
return a.b < b.b;
}
int main()
{
int n, t;
int ans = , T = ;
int i = ;
scanf("%d%d", &n, &t);
for (int i = ; i < n; i++)
scanf("%d%d", &cow[i].b, &cow[i].e);
sort(cow, cow + n, cmp);
while (T<t&&i<n)
{
ans++;
int end = T;
if (cow[i].b > T + )
{
break;
}
else
{
while (i<n&&cow[i].b <= T + )
{
end = max(end, cow[i].e);
i++;
}
T = end;
}
if (T >= t)
{
printf("%d\n", ans);
return ;
}
}
if (T >= t)
printf("%d\n", ans);
else
printf("-1\n");
return ;
}
poj 2376 选择工作区间问题 贪心算法的更多相关文章
- 设置启动MyEclipse8.5的时候选择工作区间
以前我的MyEclipse启动的时候默认都会进入到指定工作区间,比如:D:\MyEclipse,最近不知道怎么回事,每次启动的时候都是空的,必须要重新Switch Workspace选择一次 网上查找 ...
- 【POJ - 2376】Cleaning Shifts(贪心)
Cleaning Shifts Descriptions: 原文是English,我这就直接上Chinese了,想看原文的点一下链接哦 大表哥分配 N (1 <= N <= 25,000) ...
- POJ 2376 Cleaning Shifts 区间覆盖问题
http://poj.org/problem?id=2376 题目大意: 给你一些区间的起点和终点,让你用最小的区间覆盖一个大的区间. 思路: 贪心,按区间的起点找满足条件的并且终点尽量大的. 一开始 ...
- POJ 2376:Cleaning Shifts(贪心)
题目大意:有n个奶牛,他们负责在长为t个时间点的时间内值班,每个时间点至少有一个在值班,每个奶牛有一段空闲时间可以值班,求满足要求所需最少奶牛数量,无法满足则输出-1. 分析: 将奶牛空闲时间段看成线 ...
- poj 3262 牛毁坏花问题 贪心算法
题意:有n头牛,每头牛回去都需要一定时间,如果呆在原地就会毁坏花朵.问:怎么安排使得毁坏的花朵最少? 思路: 拉走成本最高的. 什么是成本?毁坏花朵的数量. 例如有两种排序 (这里用(a,b)表示 ...
- [C++] 贪心算法之活动安排、背包问题
一.贪心算法的基本思想 在求解过程中,依据某种贪心标准,从问题的初始状态出发,直接去求每一步的最优解,通过若干次的贪心选择,最终得出整个问题的最优解. 从贪心算法的定义可以看出,贪心算法不是从整体上考 ...
- eclipse myeclipse修改工作区间 an error has occurred. see error log for more details. java.lang.nullpointerexception 问题解决
解决办法:修改项目工作空间. 修改工作空间,以前打开myEclipse时知道怎么改!现在只有找配置文件了! 步骤: MyEclipse 5.1.1 GA----->Eclipse-----> ...
- 基于贪心算法求解TSP问题(JAVA)
概述 前段时间在搞贪心算法,为了举例,故拿TSP来开刀,写了段求解算法代码以便有需之人,注意代码考虑可读性从最容易理解角度写,没有优化,有需要可以自行优化! 详细 代码下载:http://www.de ...
- 贪心算法和动态规划[zz]
http://www.cnblogs.com/asuran/archive/2010/01/26/1656399.html 贪心算法 1.贪心选择性质 所谓贪心选择性质是指所求问题的整体最优解可以通过 ...
随机推荐
- C#微信支付
回归主题,16年1月初我对微信开发比较好奇,由于自己是一个比较喜欢钱的人,所以对支付功能颇为冲动,就用公司信息在微信平台申请了一个服务号,还给腾讯打赏了300大洋做了下认证,抽空看了下微信支付官方的文 ...
- Runner启动器
Runner启动器的两种创建方式: 实现ApplicationRunner接口,复写run()方法 实现CommandLineRunner接口,复写run()方法 Runner启动器的执行顺序 如果一 ...
- Eclipse的安装与使用
1安装 下载 http://www.eclipse.org 安装 (最好下载解压版的,不用安装) 安装目录中,不要出现空格与中文 例如,解压到:D:\codetool 2项目的创建 双击运行.exe文 ...
- 从wireshark数据中分析rtmp协议,并提取出H264视频流
我写的小工具 rtmp_parse.exe 使用用法如先介绍下: -sps [文件路径] 解析 sps 数据 文件当中的内容就是纯方本的hexstring: 如 42 E0 33 8D 68 05 ...
- vue.js的package.json相关问题解惑
使用vue-cli创建vue.webpack项目,在项目中用到了iSlider移动端滑动插件,只在本地命令工具中npm install islider.js:提交之后,partner下载代码后一直运行 ...
- Windows平台下如何在C#中调用Python
最近迷上了Python,发现它能够做很多C#无法完成的事情,比如,调用CMD或者在CMD中执行一个exe文件命令行并获得输出的结果.过程简单,处理起来也非常方便,但如果要用C#调用Python文件呢, ...
- JS实现单向链表、双向链表、循环链表
https://cloud.tencent.com/developer/article/1114246 链表存储有序的元素的集合,但是和数组不同的是,链表中的元素在内存中的存储并不是连续的.每一个链表 ...
- Fruit Ninja(取随机数)
链接:https://www.nowcoder.com/acm/contest/163/A来源:牛客网 时间限制:C/C++ 5秒,其他语言10秒 空间限制:C/C++ 262144K,其他语言524 ...
- 2018.5.5 phpStorm破解2017.3版本方法
方法一 注册时,在打开的License Activation窗口中选择"License server",在输入框输入下面的网址: http://im.js.cn:8888 (新) ...
- Python 模块(二)
1 logging 模块 logging有两种的配置的方式,configure.logger 1.1 config方式 import logging ''' 日志的配置:config模式 只能选择在屏 ...