~~
DP问题:可以当作01背包来做
~~
左右脑可以同时工作 但只能学一科 求所有科目完成的最少时间,所以可以一科一科的看。
#include <bits/stdc++.h>
using namespace std;
int a[5];
int sum,t;
int dp[2501],homework[21];
int main()
{
for(int i=1;i<=4;i++)
scanf("%d",&a[i]);
for(int i=1;i<=4;i++){
sum = 0;
for(int j=1;j<=a[i];j++){
cin>>homework[j];
sum+=homework[j];
}
for(int j=1;j<=a[i];j++)
for(int k=sum/2;k>=homework[j];k--)
dp[k] = max(dp[k],dp[k-homework[j]]+homework[j]);
t += sum-dp[sum/2];
for(int j=1;j<=sum/2;j++)
dp[j]=0;
}
cout<<t<<endl;
return 0;
}