题目大意:
kkksc03 需要考 4 科。因此要开始刷习题集,每科都有一个习题集,分别有 s1,s2,s3,s4
道题目,完成每道题目需要一些时间,可能不等.
kkksc03 有一个能力,他的左右两个大脑可以同时计算 22 道不同的题目,但是仅限于同一科。因此,kkksc03 必须一科一科的复习。
他希望知道能够完成复习的最短时间。
思路:
题目说了要分成左右两个大脑同时算;
就可以把习题集分配给个两个大脑
再计算时间用ans存好输出就行了。
代码:
#include<bits/stdc++.h>
using namespace std;
int s[4],a[25],m;
void dfs(int now,int n,int lef,int rig){
if(now==n){
if(m>max(lef,rig)){
m=max(lef,rig);
}
return ;
}
dfs(now+1,n,lef+a[now],rig);
dfs(now+1,n,lef,rig+a[now]);
}
int main(){
int ans=0;
for(int i=0;i<4;i++){
cin>>s[i];
}
for(int i=0;i<4;i++){
for(int j=0;j<s[i];j++){
cin>>a[j];
}
m=100000000;
dfs(0,s[i],0,0);
ans+=m;
}
cout<<ans<<endl;
return 0;
}