BZOJ1620[Usaco2008 Nov]Time Management 时间管理
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BZOJ1620[Usaco2008 Nov]Time Management 时间管理相关的知识,希望对你有一定的参考价值。
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.
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
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
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.
贪心水题。按结束时间排序,O(n)找出最早开工的工作,如果在负数时间开工,则不可能做完job。
1 #include<cstdio> 2 #include<algorithm> 3 using namespace std; 4 int n,ans=2e9,sum; 5 struct job{ 6 int t,s; 7 }momo[1050]; 8 int read(){ 9 int x=0,f=1;char ch=getchar(); 10 for(;ch<‘0‘||ch>‘9‘;ch=getchar())if(ch==‘-‘)f=-1; 11 for(;ch>=‘0‘&&ch<=‘9‘;ch=getchar())x=(x<<1)+(x<<3)+ch-‘0‘; 12 return x*f; 13 } 14 bool cmp(job a,job b){return a.s<b.s;} 15 int main(){ 16 n=read(); 17 for(int i=1;i<=n;i++)momo[i].t=read(),momo[i].s=read(); 18 sort(momo+1,momo+n+1,cmp); 19 for(int i=1;i<=n;i++){ 20 sum+=momo[i].t; 21 ans=min(ans,momo[i].s-sum); 22 } 23 printf("%d",ans<0?-1:ans); 24 return 0; 25 }
以上是关于BZOJ1620[Usaco2008 Nov]Time Management 时间管理的主要内容,如果未能解决你的问题,请参考以下文章
BZOJ1620[Usaco2008 Nov]Time Management 时间管理
BZOJ——1620: [Usaco2008 Nov]Time Management 时间管理
BZOJ 1620 [Usaco2008 Nov]Time Management 时间管理:贪心
BZOJ_1620_[Usaco2008_Nov]_Time_Management_时间管理_(二分+贪心)