usaco 4.2 Job Processing(贪心)
2012-07-25 14:58
429 查看
Job Processing
IOI'96
A factory is running a production line that requires two operations to be performed on each job: first operation "A" then operation "B". Only a certain number of machines are capable of performing each operation.
Figure 1 shows the organization of the production line that works as follows. A type "A" machine takes a job from the input container, performs operation "A" and puts the job into the intermediate container.
A type "B" machine takes a job from the intermediate container, performs operation "B" and puts the job into the output container. All machines can work in parallel and independently of each other, and the size of each container is unlimited. The machines
have different performance characteristics, a given machine requires a given processing time for its operation.
Give the earliest time operation "A" can be completed for all N jobs provided that the jobs are available at time 0. Compute the minimal amount of time that is necessary to perform both operations (successively,
of course) on all N jobs.
题目:http://ace.delos.com/usacoprob2?a=6usYpMytQ3l&S=job
题意:给你n个任务,每个任务要用ab两个步骤完成,有m1台机器做a步骤,m2台机器做b步骤,求完成a步骤的时间,和完成b步骤的时间
分析:这题显然是任务调度问题,对于第一问,也就是完成a步骤,对于第二问,一开始我以为是网络流问题,因为这道题放在这个地方= =,其实还是个贪心问题,我们只要假设没有a步骤,然后同a步骤的做法,求出每个任务完成的具体时间,ab两个时间时间表反向相加的最大值就是第二问
代码:
IOI'96
A factory is running a production line that requires two operations to be performed on each job: first operation "A" then operation "B". Only a certain number of machines are capable of performing each operation.
Figure 1 shows the organization of the production line that works as follows. A type "A" machine takes a job from the input container, performs operation "A" and puts the job into the intermediate container.
A type "B" machine takes a job from the intermediate container, performs operation "B" and puts the job into the output container. All machines can work in parallel and independently of each other, and the size of each container is unlimited. The machines
have different performance characteristics, a given machine requires a given processing time for its operation.
Give the earliest time operation "A" can be completed for all N jobs provided that the jobs are available at time 0. Compute the minimal amount of time that is necessary to perform both operations (successively,
of course) on all N jobs.
PROGRAM NAME: job
INPUT FORMAT
Line 1: | Three space-separated integers: N, the number of jobs (1<=N<=1000). M1, the number of type "A" machines (1<=M1<=30) M2, the number of type "B" machines (1<=M2<=30) |
Line 2..etc: | M1 integers that are the job processing times of each type "A" machine (1..20) followed by M2 integers, the job processing times of each type "B" machine (1..20). |
SAMPLE INPUT (file job.in)
5 2 3 1 1 3 1 4
OUTPUT FORMAT
A single line containing two integers: the minimum time to perform all "A" tasks and the minimum time to perform all "B" tasks (which require "A" tasks, of course).SAMPLE OUTPUT (file job.out)
3 5
题目:http://ace.delos.com/usacoprob2?a=6usYpMytQ3l&S=job
题意:给你n个任务,每个任务要用ab两个步骤完成,有m1台机器做a步骤,m2台机器做b步骤,求完成a步骤的时间,和完成b步骤的时间
分析:这题显然是任务调度问题,对于第一问,也就是完成a步骤,对于第二问,一开始我以为是网络流问题,因为这道题放在这个地方= =,其实还是个贪心问题,我们只要假设没有a步骤,然后同a步骤的做法,求出每个任务完成的具体时间,ab两个时间时间表反向相加的最大值就是第二问
代码:
/* ID: 15114582 PROG: job LANG: C++ */ #include<cstdio> #include<iostream> #include<cstring> #include<algorithm> using namespace std; int a[33],b[33],s1[33],s2[33],aa[1111],bb[1111]; int main() { freopen("job.in","r",stdin); freopen("job.out","w",stdout); int i,j,k,n,m1,m2,t; while(~scanf("%d%d%d",&n,&m1,&m2)) { for(i=0;i<m1;++i) scanf("%d",&a[i]),s1[i]=0;; for(i=0;i<m2;++i) scanf("%d",&b[i]),s2[i]=0; for(t=0;t<n;++t) { k=1e9; for(i=0;i<m1;++i) if(s1[i]+a[i]<k) { k=s1[i]+a[i]; j=i; } aa[t]=s1[j]=k; k=1e9; for(i=0;i<m2;++i) if(s2[i]+b[i]<k) { k=s2[i]+b[i]; j=i; } bb[t]=s2[j]=k; } sort(aa,aa+n); sort(bb,bb+n); printf("%d ",aa[n-1]); for(k=i=0;i<n;++i) k=max(k,aa[i]+bb[n-i-1]); printf("%d\n",k); } return 0; }
相关文章推荐
- usaco 4.2 Job Processing 贪心
- USACO-Section 4.2 Job Processing (贪心)
- Job Processing_usaco4.2_贪心
- USACO 4.2 Job Processing(贪心)
- USACO Section 4.2 Job Processing - 贪心
- USACO 4.2 job processing
- USACO 最佳队列 贪心
- COGS——T 886. [USACO 4.2] 完美的牛栏
- bzoj 1651: [Usaco2006 Feb]Stall Reservations 专用牛棚【贪心+堆||差分】
- [luogu2209][USACO13]燃油经济性Fuel Economy_贪心
- bzoj 1704: [Usaco2007 Mar]Face The Right Way 自动转身机【贪心+差分】
- bzoj 1783: [Usaco2010 Jan]Taking Turns【贪心+dp】
- [bzoj1704][Usaco2007 Mar]Face The Right Way 自动转身机_贪心
- BZOJ 1776: [Usaco2010 Hol]cowpol 奶牛政坛 贪心lca/点分治
- 贪心?DP?——BZOJ4582/Luogu3143 [USACO16OPEN]钻石收藏家Diamond Collector
- 1707: [Usaco2007 Nov]tanning分配防晒霜 (贪心)
- BZOJ 1828 [Usaco2010 Mar]balloc 农场分配(贪心+线段树)
- [DP || 贪心 链表] BZOJ 4576 [Usaco2016 Open]262144 & BZOJ 4580 [Usaco2016 Open]248
- BZOJ 1634: [Usaco2007 Jan]Protecting the Flowers 护花( 贪心 )
- 贪心算法-4.2背包问题