题目描述
有一系列产品,给定每个产品的加工时间和冷却成型时间(冷却过程产品之间没有关系,是单独冷却的)。现在你手上有两台机器可以用来加工,你需要安排产品加工的顺序以及去哪台机器加工,使得所有产品都成型的时间最早。机器之间互不相关,可以同时进行工作,一个机器一个时刻只能加工一个产品。
输入输出格式
输入格式:
第一行一个数n,表示产品个数,以下n行,每行两个数分别表示产品加工的时间A[i]和冷却时间B[i]。
【数据规模】
对于20%的数据,满足n≤6;
对于100%的数据,满足n,A[i],B[i]≤200。
输出格式:
一个数表示所有产品成型的最早时间。
输入输出样例
输入样例#1:
3
1 4
3 3
4 1
输出样例#1:
6
本题可以用根据冷却时间的顺序先进行一步贪心,再DP,保证得到最优值
f[i,j]代表共加工了前i个产品,1号机器加工使用j单位时间,得到的最小完成时间
状态转移方程f[i,j]:=max{j+b[i],f[i-1,j-a[i]],c[i]-j+b[i],f[i-1,j]} c代表前i个产品的总加工时间 当然还要注意判断能否取到j-a[i]和c[i]-j
pascal代码如下
program df;
var i,j,n,m,x,y,z,k,t:longint;
a,b,c:array[0..100000] of longint;
f:array[0..200,0..40000] of longint;
procedure