A型机器从输入库接受工件,对其施加操作A,得到的中间产品存放在缓冲库。B型机器从缓冲库接受中间产品,对其施加操作B,得到的最终产品存放在输出库。所有的机器平行并且独立地工作,每个库的容量没有限制。每台机器的工作效率可能不同,一台机器完成一次操作需要一定的时间。
给出每台机器完成一次操作的时间,计算完成A操作的时间总和的最小值,和完成B操作的时间总和的最小值。
/*
ID: modengd1
PROG: job
LANG: C++
*/
#include <iostream>
#include <stdio.h>
#include <memory.h>
using namespace std;
int N,M[2],t[2][30];
int cost[2][1000],delay[30],ans;
int main()
{
freopen("job.in","r",stdin);
freopen("job.out","w",stdout);
scanf("%d%d%d",&N,&M[0],&M[1]);
for(int i=0;i<M[0];i++)
scanf("%d",&t[0][i]);
for(int i=0;i<M[1];i++)
scanf("%d",&t[1][i]);
for(int k=0;k<2;k++)
{
memset(delay,0,sizeof(delay));
for(int i=0;i<N;i++)
{
int T=0x7fffffff,tag;
for(int j=0;j<M[k];j++)
{
if(delay[j]+t[k][j]<T)
{
T=delay[j]+t[k][j];
tag=j;
}
}
cost[k][i]=T;
delay[tag]+=t[k][tag];
}
}
ans=0;
for(int i=0;i<N;i++)
{
ans=max(cost[0][i]+cost[1][N-1-i],ans);
}
cout<<cost[0][N-1]<<‘ ‘<<ans<<endl;
return 0;
}
原文:http://www.cnblogs.com/modengdubai/p/4850946.html