n个作业交给两台机器处理,每个机器处理每个作业都有一个时间,求处理完成所有任务的最短时间。
#include<string.h>
#include<cstdio>
#include<cstdlib>
#include<vector>
#include<iostream>
#include<algorithm>
#define INF 1<<20
using namespace std;
int p[2000]={0};
int main()
{
int n;
int i,j,k,sa=0,sb=0,minn=INF;
int A[201],B[201],x=0;
cin>>n;
for(i=1;i<=n;i++)
{
cin>>A[i];
sa+=A[i];
}
for(i=1;i<=n;i++)
{
cin>>B[i];
sb+=B[i];
}
for(k=1;k<=n;k++)
for(i=sa;i>=0;i--)
if(i>=A[k])
p[i]=p[i-A[k]]<p[i]+B[k]?p[i-A[k]]:p[i]+B[k];
else
p[i]=p[i]+B[k];
for(i=0;i<=sa;i++)
{
k=i>p[i]?i:p[i];
if(k<minn)
minn=k;
}
cout<<minn<<endl;
return 0;
}