博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【BZOJ】1620: [Usaco2008 Nov]Time Management 时间管理(贪心)
阅读量:5735 次
发布时间:2019-06-18

本文共 2643 字,大约阅读时间需要 8 分钟。

一开始想不通啊。。

其实很简单。。。

每个时间都有个完成时间,那么我们就从最大的 完成时间的开始往前推

每一次更新最早开始时间(min(ans, a[i].y)代表i事件最早的完成时间)

#include 
#include
#include
#include
#include
#include
#include
using namespace std;#define rep(i, n) for(int i=0; i<(n); ++i)#define for1(i,a,n) for(int i=(a);i<=(n);++i)#define for2(i,a,n) for(int i=(a);i<(n);++i)#define for3(i,a,n) for(int i=(a);i>=(n);--i)#define for4(i,a,n) for(int i=(a);i>(n);--i)#define CC(i,a) memset(i,a,sizeof(i))#define read(a) a=getint()#define print(a) printf("%d", a)#define dbg(x) cout << #x << " = " << x << endl#define printarr(a, n, m) rep(aaa, n) { rep(bbb, m) cout << a[aaa][bbb]; cout << endl; }inline const int getint() { int r=0, k=1; char c=getchar(); for(; c<'0'||c>'9'; c=getchar()) if(c=='-') k=-1; for(; c>='0'&&c<='9'; c=getchar()) r=r*10+c-'0'; return k*r; }inline const int max(const int &a, const int &b) { return a>b?a:b; }inline const int min(const int &a, const int &b) { return a
y.y; }int main() { int n=getint(); for1(i, 1, n) read(a[i].x), read(a[i].y); sort(a+1, a+1+n, cmp); int ans=~0u>>1; for1(i, 1, n) ans=min(ans, a[i].y)-a[i].x; if(ans<0) puts("-1"); else print(ans); return 0;}

 

 


 

 

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

转载地址:http://jhrwx.baihongyu.com/

你可能感兴趣的文章
使用navicat连接linux服务器数据库方法
查看>>
Mysql修改语句的运行流程
查看>>
VS中实时获取SVN的版本号并写入到AssemblyInfo.cs中(C#)
查看>>
钉钉开发系列(十二)机器人
查看>>
ubuntu 使用印象筆記 evernote nixnote2
查看>>
golang单点推送
查看>>
在行列均递增的矩阵中找一个数(要求比较次数不超过行数+列数)
查看>>
struts
查看>>
LINQ 标准的查询操作符 分组 group by into 、select new 、orderby descending、from in
查看>>
React.js
查看>>
浏览器缓存
查看>>
Python学习笔记_二维数组的查找判断
查看>>
紫书题目-树叶的下落
查看>>
RESTful接口设计原则和优点
查看>>
python解决汉诺塔问题
查看>>
命令行 批量修改文件的文件名(包括文件名包含空格)
查看>>
【NOIP】提高组2013 转圈游戏
查看>>
【BZOJ】1031 [JSOI2007]字符加密Cipher
查看>>
Nginx反向代理1--基本介绍-虚拟主机
查看>>
${pageContext.request.contextPath}
查看>>