bzoj1620:时间管理

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

Time Limit: 5 Sec  Memory Limit: 64 MB
Submit: 571  Solved: 343
[Submit][Status][Discuss]

Description

Ever the maturing businessman, Farmer John realizes that he must manage his time effectively. He has N jobs conveniently numbered 1..N (1 <= N <= 1,000) to accomplish (like milking the cows, cleaning the barn, mending the fences, and so on). To manage his time effectively, he has created a list of the jobs that must be finished. Job i requires a certain amount of time T_i (1 <= T_i <= 1,000) to complete and furthermore must be finished by time S_i (1 <= S_i <= 1,000,000). Farmer John starts his day at time t=0 and can only work on one job at a time until it is finished. Even a maturing businessman likes to sleep late; help Farmer John determine the latest he can start working and still finish all the jobs on time.

N个工作,每个工作其所需时间,及完成的Deadline,问要完成所有工作,最迟要什么时候开始.

Input

* Line 1: A single integer: N

* Lines 2..N+1: Line i+1 contains two space-separated integers: T_i and S_i

Output

* Line 1: The latest time Farmer John can start working or -1 if Farmer John cannot finish all the jobs on time.

Sample Input

4
3 5
8 14
5 20
1 16

INPUT DETAILS:

Farmer John has 4 jobs to do, which take 3, 8, 5, and 1 units of
time, respectively, and must be completed by time 5, 14, 20, and
16, respectively.

Sample Output

2

OUTPUT DETAILS:

Farmer John must start the first job at time 2. Then he can do
the second, fourth, and third jobs in that order to finish on time.

HINT

Source

Silver

先排序一下,注意是排序完成的时间,然后用二分答案就ok了,感觉就是好像如果能用枚举的话用二分答案搞。

我草草草草一直wa居然是因为一个点需要输出-1!!!看题看题看题看题!!!

--------------------------------------------------------------------------------------------------

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
using namespace std;
int n;
struct edge{
 int dis,to;
 bool operator<(const edge&rhs) const{
   return to<rhs.to;}
};
edge edges[1005];
bool pd(int x){
    int ans=x;
 for(int i=1;i<=n;i++){
  edge &s=edges[i];
  ans+=s.dis;
     if(ans>s.to)
       return false;
 }
 return true;
}
int main(){
 scanf("%d",&n);
 int ans=-2;
 int l=0;int r=0x7fffffff;
 for(int i=1;i<=n;i++){
  scanf("%d%d",&edges[i].dis,&edges[i].to);
  r=min(r,edges[i].to);
 }
 sort(edges+1,edges+n+1);
 while(l<=r){
  int m=(l+r)/2;
     if(pd(m)){
      ans=m,l=m+1;
     }
     else
       r=m-1;
 }
 if(ans!=-2)
   printf("%d\n",ans);
 else
   printf("-1");
 return 0;
}

-------------------------------------------------------------------------------

时间: 2024-08-05 19:09:03

bzoj1620:时间管理的相关文章

bzoj1620[Usaco2008 Nov]Time Management 时间管理*

bzoj1620[Usaco2008 Nov]Time Management 时间管理 题意: n个任务,每个有一个所需时间和最晚完成时刻,问最晚要从什么时候开始工作.n≤1000 题解: 贪心,按最晚完成时刻从早到晚排序,如果当前任务来不及完成,就将前面的任务往前推,否则累积一个“自由时间”.当推任务时,如果之前有“自由时间”,就用自由时间减往前推的时间,否则用最晚开始时间去减往前推的时间.反思:我开始贪错了,按最晚开始时刻从早到晚排序,结果WA很久.现在还是想不太清楚原因,希望哪位神犇能帮我

bzoj1620 / P2920 [USACO08NOV]时间管理Time Management

P2920 [USACO08NOV]时间管理Time Management 显然的贪心. 按deadline从大到小排序,然后依次填充时间. 最后时间为负的话那么就是无解 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 #define re register 6 using namespace std; 7 int max(int a,in

时间管理

时间是一种快速移动的资产,你所拥有的时间就是那么多.如何运用你所拥有的时间对于你的前程来说,将是至关重要的. 从许多方面来说,时间是你最宝贵的商品----浪费它的风险必须由你自己来承担. 每个人每周都有168个小时,或者每月大约有720个小时的时间.每个小时呢对于我们来说都是非常重要的. 今天我们要讨论的是时间管理,首先我们必须得明白什么是时间管理?时间管理总的来说就是运用策略和技术,帮助你尽可能有效的利用你的时间. 现在我们知道了什么是时间管理,那我们要怎么去做呢? 1.首先我们得想想我们的时

花10万学时间管理,还不如明白这两个字

1 A是个很勤奋的人,无论是工作.学习还是社交,都很忙很忙.他经常挂在嘴边的话便是时间不够用. 于是,他找了一大堆时间管理书籍,还报了培训班,研究啊研究,用了不知道多少工具,尝试了不知道多少种方法. 过了很长一段时间后,朋友们见他,他还是会说时间不够用啊不够用.生活状态还是跟以前一样,忙而乱,没成绩. 2 其实我们很多人都跟A一样,一旦发觉自己的时间不够用,效率低,可能首先考虑的就是学习时间管理,问各种工具方法. 然后发现,大部分努力成了然并卵,时间一过,还是老样子. 最近,我也在琢磨这个问题,

程序员们的时间管理法则

转自:http://www.csdn.net/article/2012-07-26/2807737 软件开发是非常令人兴奋的工作,经过多年的工作,你不仅可以得到相应的报酬(随着工作经验增长)还会有其他晋升的机会.大多数人只关心保持头浮出水面.但这并不是我们所要追求的目标,那仅仅是我们在学校或者孩童时代的梦想? 为了赚更多的钱,大多数人还会找额外的工作并且不太关注编程以外的东西.没有时间休息.没有时间和家人朋友小聚.除了工作还是工作.因此导致压力越来越大,对生活的不满足感油然而生. 其实我们只要稍

统筹高效利用时间——《小强升职记(升级版):时间管理故事书》读后感

      统筹高效利用时间 --<小强升职记(升级版):时间管理故事书>读后感 看完<小强升职记:时间管理故事书>,很有感触.书只是以小强为人物线索,通篇讲解如何管理.高效利用时间,和功利的升职等没有任何关系.全书着重讲如何利用时间,如"摔倒身上的猴子"等方法很受用.也想让媳妇和大家伙读一遍. 每天的忙碌,为什么有的人效率很高,有的人效率很低,同样的任务还要加班(这点我做的也不好).很大的原因往往是时间安排的不合理,分不清轻重缓急,没有目标,或者有目标容易

时间管理(uC/OS-II)

一.时钟节拍 uC/OS-II需要提供周期性信号源,用于实现时间延迟和确认超时.时钟节拍率越高,系统的额外负荷就越重.时钟节拍的实际频率取决于应用程序的精度.时钟节拍可以是专门的硬件定时器,也可以是来自50/60Hz交流电源信号. 注意:必须在多任务系统启动以后,即在调用OSStart()之后,再开启时钟节拍器.调用OSStart()之后应做的第一件事就是初始化定时器中断.通常容易犯的错误是将允许时钟节拍中断放在系统初始化函数OSInit()之后,在启动多任务OSStart()之前. uC/OS

为我所用--时间管理的价值

(一)时间管理概述 时间管理是根据自己的价值观和目标决定做不做某事.排定任务的优先级.何时做.做到什么程度的管理.时间管理首先就要求我们能够认识自我,清楚自己的价值观和最高目标--人们称之为人生使命.这个庞大的话题非三言两语所能说明,如果不想蹉跎,推荐通过阅读<小强升职记>开始自己的时间管理. 时间管理最重要的是自己掌控自己-掌控自己的方向.掌控自己的时间.掌控自己的脑袋,所以采用何种方式是次要的,起到管理的目的就好.时间管理的工具很多,存在着种种APP,有些有过度管理的倾向,大可不必纠结于采

【执行力决定命】第8集《时间管理,让工作和生活井井有条》

「音频原文」http://dwz.cn/6sB211 大家好,我是林琳笨,今天跟大家一起分享<时间管理,让工作和生活井井有条>,这个话题不但和工作有关系,也和生活关系也很大. 成功人士是事业有成,家庭照顾的很好,工作之余能陪家人过快乐的家庭生活,这不可能只是运气,也未必是他非常的努力,大部分原因是因为时间分配的很合理.所以有些企业基层及中层人员抱怨"我工作忙的连陪家里人的时间也没有了,家里人对我意见很大."这个时候需要反省,是不是自己在时间管理上出了问题. 所以说时间管理不