题解 P2920 【[USACO08NOV]时间管理Time Management】
好了,废话不多说,我们切入正题,首先,不懂得分治的可以去看这位大佬的文章,
这道题是让我们求最晚可以在什么时间起床,这里我们需要加入一个小小的贪心,就是结束时间短的放前面处理,至于为什么,相信你肯定能理解
然后,我们定义三个变量,\(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】相关推荐
- 洛谷 P2920 [USACO08NOV]时间管理Time Management
时间管理Time Management 二分枚举开始时间. #include <iostream> #include <cstdio> #include <algorit ...
- P2920题解【[USACO08NOV]时间管理Time Management】
这个题不难,但我是蒟蒻... 先看题目 题目: Ever the maturing businessman, Farmer John realizes that he must manage his ...
- P2920 [USACO08NOV]时间管理Time Management
题目描述 Ever the maturing businessman, Farmer John realizes that he must manage his time effectively. H ...
- BZOJ1620洛谷P2920 [USACO08NOV]时间管理Time Management
emm贪心题,但不知道怎么让我搞成了并查集 先将数组按结束时间排序,因为肯定先安排靠后的工作,后面处理时冲突会减小很多 然后如何并查集乱搞呢? 假如下图是一个没有加入任务的时间线{{20,5},{15 ...
- LUOGU P2920 [USACO08NOV]时间管理Time Management
题目描述 Ever the maturing businessman, Farmer John realizes that he must manage his time effectively. H ...
- [USACO08NOV]时间管理Time Management
题目描述 Ever the maturing businessman, Farmer John realizes that he must manage his time effectively. H ...
- [BZOJ] 1620: [Usaco2008 Nov]Time Management 时间管理
1620: [Usaco2008 Nov]Time Management 时间管理 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 850 Solved ...
- bzoj 1620: [Usaco2008 Nov]Time Management 时间管理(贪心)
1620: [Usaco2008 Nov]Time Management 时间管理 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 834 Solved ...
- Time Management 时间管理
Time Management 时间管理 世界上最快而又最慢,最长而又最短,最平凡而又最珍贵,最易被忽视而又最令人后悔的是什么? ------时间 ------接下来敢不敢完成挑战测试:你对时间的感知 ...
最新文章
- Oracle笔记 八、PL/SQL跳转/判断/循环语句块
- c#扩展方法的理解(二:接口)
- 【报告分享】中美人工智能之比较分析报告.pdf(附下载链接)
- 【Zend Studio】10.6.0版本设置默认编码为UTF-8
- 18.看板方法---精益的一种经济学模型
- 基于SSM的租房管理系统
- 微信小程序快手小店登录
- 《PWM整流器及其控制》读书笔记-第二章-PWM整流器拓扑结构及原理
- Pyecharts之折线图与柱状图组合绘制
- 安装MySQL8.0+,数据库初始化失败错误解决办法
- 郑捷《机器学习算法原理与编程实践》学习笔记(第六章 神经网络初步)6.5 Boltzmann机算法...
- STM32f4系列ADC解析
- springboot---微信小程序上传文件(word/pdf文件)
- 志愿者报名图片大小调整
- 3000亿美元的东南亚数码经济为企业创造增长机会,也带来更大的欺诈风险 | 美通社头条...
- elementUI checkbox选中回显操作注意事项
- Linux free命令使用
- Python实现正无穷 负无穷赋值
- 投入产出分析软件研发成功
- c语言对sht11编程,SHT11数字温湿度传感器 含源代码和仿真图