小A的大学生活非常的颓废,平时根本不学习。但是,临近期末考试,他必须要开始抱佛脚,以求不挂科。
这次期末考试,小A需要考 4 科。因此要开始刷习题集,每科都有一个习题集,分别有 s1,s2,s3,s4 道题目,完成每道题目需要一些时间,可能不等。
小A有一个能力,他的左右两个大脑可以同时计算 2 道不同的题目,但是仅限于同一科。因此,kkksc03 必须一科一科的复习。
由于小A还急着去处理洛谷的 bug,因此他希望尽快把事情做完,所以他希望知道能够完成复习的最短时间。
本题包含 5 行数据:第 1 行,为四个正整数 s1,s2,s3,s4。
第 2 行,为A1,A2,…,As1 共s1 个数,表示第一科习题集每道题目所消耗的时间。
第 3 行,为B1,B2,…,Bs2 共s2 个数。
第 4 行,为C1,C2,…,Cs3 共s3 个数。
第 5 行,为D1,D2,…,Ds4 共s4 个数,意思均同上。
#include<bits/stdc++.h>
using namespace std;
int main(){
int b[5];
int a[1000]={};
for(int i=0;i<4;i++){
cin>>b[i];
}
/
int g;
int num=0,sum=0;//num dangqian,sum zonghe
for(int i=0;i<4;i++){
int ct[1000]={};
num=0;
for(int k=0;k<b[i];k++){
cin>>a[k];
num+=a[k];
}g=num/2;
for(int j=0;j<b[i];j++){
for(int l=g;l>=a[j];l--){
ct[l]=max(ct[l],ct[l-a[j]]+a[j]);
}
}sum=sum+(num-ct[g]);
cout<<sum<<" ";
}
cout<<sum;
return 0;
}