好了,废话不多说,我们切入正题,首先,不懂得分治的可以去看这位大佬的文章,
这道题是让我们求最晚可以在什么时间起床,这里我们需要加入一个小小的贪心,就是结束时间短的放前面处理,至于为什么,相信你肯定能理解
然后,我们定义三个变量,\(left\) ,\(right\) ,\(mid\) ,其中,\(left\) 表示再找这个区间的起点,而 \(right\) 表示这个区间的终点,\(mid\) 表示它们中间的值,像这种地方,一般只需背个模板就行了,然后,本题最最重要的地方来了 —— 判断函数,(像本蒟蒻就是在这里卡了很久)
首先,我们可以这么判断,如果当前所在的时间加上这个任务所需要的时间,没有超过这个任务所必须结束的时间,那么,新的时间则等于原来的时间加上任务所花的时间,否则,证明这个数不合法,本题的思路就是这样,如果你还不明白,请仔细看下面的代码:

#include <iostream>
#include <cstdio>
using namespace std;
struct node
{int start;   //起始时间 int comes;   //必须在什么时间结束
};
struct node que[1000001];
int n;
bool check(int cnt)
{int x,y,tnt=cnt;for(x=1;x<=n;x++){if(que[x].start+tnt<=que[x].comes)//如果当前的时间加上任务所需的时间小于等于结束时间,将新的时间等于旧的时间加上任务时间tnt=que[x].start+tnt;elsereturn false;//否则,说明这个数不合法}return true;
}
int main()
{int right=1000000000,left=1,mid=(left+right)/2;int i,j,k,ans=0;scanf("%d",&n);for(i=1;i<=n;i++)scanf("%d %d",&que[i].start,&que[i].comes);//读入数据for(i=1;i<=n;i++)for(j=i+1;j<=n;j++)if(que[i].comes>que[j].comes)swap(que[i],que[j]);//结束时间短的需放在前面处理while(left<=right)//这个只是一个模板,本人使用的是记录答案法{mid=(left+right+1)/2;//防止死循环if(check(mid)){ans=mid;    //如果这个数合法,那么在它的右边寻找更优解left=mid+1;}elseright=mid-1;//否则,就在它的左边寻找解}if(ans!=0)cout<<ans;elsecout<<-1;return 0;//圆满结束
}

转载于:https://www.cnblogs.com/Call-me-zhz/p/11287107.html

题解 P2920 【[USACO08NOV]时间管理Time Management】相关推荐

  1. 洛谷 P2920 [USACO08NOV]时间管理Time Management

    时间管理Time Management 二分枚举开始时间. #include <iostream> #include <cstdio> #include <algorit ...

  2. P2920题解【[USACO08NOV]时间管理Time Management】

    这个题不难,但我是蒟蒻... 先看题目 题目: Ever the maturing businessman, Farmer John realizes that he must manage his ...

  3. P2920 [USACO08NOV]时间管理Time Management

    题目描述 Ever the maturing businessman, Farmer John realizes that he must manage his time effectively. H ...

  4. BZOJ1620洛谷P2920 [USACO08NOV]时间管理Time Management

    emm贪心题,但不知道怎么让我搞成了并查集 先将数组按结束时间排序,因为肯定先安排靠后的工作,后面处理时冲突会减小很多 然后如何并查集乱搞呢? 假如下图是一个没有加入任务的时间线{{20,5},{15 ...

  5. LUOGU P2920 [USACO08NOV]时间管理Time Management

    题目描述 Ever the maturing businessman, Farmer John realizes that he must manage his time effectively. H ...

  6. [USACO08NOV]时间管理Time Management

    题目描述 Ever the maturing businessman, Farmer John realizes that he must manage his time effectively. H ...

  7. [BZOJ] 1620: [Usaco2008 Nov]Time Management 时间管理

    1620: [Usaco2008 Nov]Time Management 时间管理 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 850  Solved ...

  8. bzoj 1620: [Usaco2008 Nov]Time Management 时间管理(贪心)

    1620: [Usaco2008 Nov]Time Management 时间管理 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 834  Solved ...

  9. Time Management 时间管理

    Time Management 时间管理 世界上最快而又最慢,最长而又最短,最平凡而又最珍贵,最易被忽视而又最令人后悔的是什么? ------时间 ------接下来敢不敢完成挑战测试:你对时间的感知 ...

最新文章

  1. Oracle笔记 八、PL/SQL跳转/判断/循环语句块
  2. c#扩展方法的理解(二:接口)
  3. 【报告分享】中美人工智能之比较分析报告.pdf(附下载链接)
  4. 【Zend Studio】10.6.0版本设置默认编码为UTF-8
  5. 18.看板方法---精益的一种经济学模型
  6. 基于SSM的租房管理系统
  7. 微信小程序快手小店登录
  8. 《PWM整流器及其控制》读书笔记-第二章-PWM整流器拓扑结构及原理
  9. Pyecharts之折线图与柱状图组合绘制
  10. 安装MySQL8.0+,数据库初始化失败错误解决办法
  11. 郑捷《机器学习算法原理与编程实践》学习笔记(第六章 神经网络初步)6.5 Boltzmann机算法...
  12. STM32f4系列ADC解析
  13. springboot---微信小程序上传文件(word/pdf文件)
  14. 志愿者报名图片大小调整
  15. 3000亿美元的东南亚数码经济为企业创造增长机会,也带来更大的欺诈风险 | 美通社头条...
  16. elementUI checkbox选中回显操作注意事项
  17. Linux free命令使用
  18. Python实现正无穷 负无穷赋值
  19. 投入产出分析软件研发成功
  20. c语言对sht11编程,SHT11数字温湿度传感器 含源代码和仿真图

热门文章

  1. 现在4G对比5G手机到底要怎么选?以下四点建议,看完就懂了
  2. c语言排序算法(使用链表)
  3. 如何删除一个Python变量
  4. 用软碟同(UtroISO)制作install.win大于4G的启动盘
  5. JS AJAX传递数组的方法
  6. Python 字符串去除换行符和空格
  7. 关于Elasticsearch 报错failed to obtain node locks....
  8. 单链表实现增删改查(进化版)
  9. 纯JS导入导出文件(XLSX)
  10. 3分钟搞定微信小程序类美团用户商家距离计算