题意:给一些工作区间,如何选取最小的工作数量,覆盖[1,T]的工作时长

一开始的思路,当然也是错误的思路:

  • 我想着,最小工作数量是吧?那肯定就是选择结束时间最晚的,给结束时间来一个排序。哎这个思路错误的离谱...

解题思路:

  1. 标记起点,当然对提供的工作区间,按开始的时间从小到大排序。
  2. 对能够覆盖起点(即可选的工作区域),选择结束时间最晚的(即工作时长最长的)
  3. 更新起点

代码中的小技巧

主要针对第二个解题思路:

  1. 可选区域: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 选择工作区间问题 贪心算法的更多相关文章

  1. 设置启动MyEclipse8.5的时候选择工作区间

    以前我的MyEclipse启动的时候默认都会进入到指定工作区间,比如:D:\MyEclipse,最近不知道怎么回事,每次启动的时候都是空的,必须要重新Switch Workspace选择一次 网上查找 ...

  2. 【POJ - 2376】Cleaning Shifts(贪心)

    Cleaning Shifts Descriptions: 原文是English,我这就直接上Chinese了,想看原文的点一下链接哦 大表哥分配 N (1 <= N <= 25,000) ...

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

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

  4. POJ 2376:Cleaning Shifts(贪心)

    题目大意:有n个奶牛,他们负责在长为t个时间点的时间内值班,每个时间点至少有一个在值班,每个奶牛有一段空闲时间可以值班,求满足要求所需最少奶牛数量,无法满足则输出-1. 分析: 将奶牛空闲时间段看成线 ...

  5. poj 3262 牛毁坏花问题 贪心算法

    题意:有n头牛,每头牛回去都需要一定时间,如果呆在原地就会毁坏花朵.问:怎么安排使得毁坏的花朵最少? 思路: 拉走成本最高的. 什么是成本?毁坏花朵的数量. 例如有两种排序   (这里用(a,b)表示 ...

  6. [C++] 贪心算法之活动安排、背包问题

    一.贪心算法的基本思想 在求解过程中,依据某种贪心标准,从问题的初始状态出发,直接去求每一步的最优解,通过若干次的贪心选择,最终得出整个问题的最优解. 从贪心算法的定义可以看出,贪心算法不是从整体上考 ...

  7. eclipse myeclipse修改工作区间 an error has occurred. see error log for more details. java.lang.nullpointerexception 问题解决

    解决办法:修改项目工作空间. 修改工作空间,以前打开myEclipse时知道怎么改!现在只有找配置文件了! 步骤: MyEclipse 5.1.1 GA----->Eclipse-----> ...

  8. 基于贪心算法求解TSP问题(JAVA)

    概述 前段时间在搞贪心算法,为了举例,故拿TSP来开刀,写了段求解算法代码以便有需之人,注意代码考虑可读性从最容易理解角度写,没有优化,有需要可以自行优化! 详细 代码下载:http://www.de ...

  9. 贪心算法和动态规划[zz]

    http://www.cnblogs.com/asuran/archive/2010/01/26/1656399.html 贪心算法 1.贪心选择性质 所谓贪心选择性质是指所求问题的整体最优解可以通过 ...

随机推荐

  1. Cube配置http通过SSRS连接

    IIS的配置:http://www.cnblogs.com/ycdx2001/p/4254994.html 连接字符串: Data Source=http://IP74/olap/msmdpump.d ...

  2. Android篇---Styles和Themes常见用法可能疑点小结

    1.style和theme的区别: 简而言之,style指的就是安卓中一个UI控件的样式,而themes指的是安卓中一个activity界面或者整个安卓应用整体的样式.theme的范围比style的范 ...

  3. 【Python图像特征的音乐序列生成】数据集制作的一些tricks

    关于数据集的制作,我决定去掉很多不必要的东西,比如和弦,于是我选择了melody部分的旋律. 有了midi文件,我现在要abc序列,所以我要通过midi2abc转换一下文件. 批处理程序效果如下: 文 ...

  4. Codeforces Round #321 (Div. 2) D Kefa and Dishes(dp)

    用spfa,和dp是一样的.转移只和最后一个吃的dish和吃了哪些有关. 把松弛改成变长.因为是DAG,所以一定没环.操作最多有84934656,514ms跑过,实际远远没这么多. 脑补过一下费用流, ...

  5. UVA 246 10-20-30 10-20-30游戏 模拟+STL双端队列deque

    Input Each input set consists of a sequence of 52 integers separated by spaces and/or ends of line. ...

  6. 使用FileSystemWatcher组件监视日志文件

    实现效果: 知识运用: FileSystemWatcher组件的Path属性 Filter属性 //要监视那些文件   默认为*.* Endinit方法 //结束在窗体上使用或有另一个组件使用的Fil ...

  7. bootstrap历练实例:面板脚注

    面板脚注 我们可以在面板中添加脚注,只需要把按钮或者副文本放在带有 class .panel-footer 的 <div> 中即可.下面的实例演示了这点: <!DOCTYPE htm ...

  8. Windows平台下MySQL常用操作与命令

    Windows平台下MySQL常用操作与命令 Windows平台下MySQL常用操作与命令,学习mysql的朋友可以参考下. 1.导出整个数据库 mysqldump -u 用户名 -p --defau ...

  9. sql where in字符串问题

    在pycharm中执行 select * from value in(1,2); 会提醒: No statement found under the caret. Execute all statem ...

  10. MFC 菜单编程 -- 总结

    菜单结构 一个菜单栏可以有若干个子菜单,而一个子菜单又可有若干个菜单项.对于菜单栏的子菜单,由左至右从0开始索引.对于特定的子菜单的菜单项,由上至下建立从0开始的索引.访问子菜单和菜单项,均可通过其索 ...