P2392 kkksc03考前临时抱佛脚 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
#include<iostream>
using namespace std;
int s[5]; //s存储科目
int a[5][25]; //a存储每个科目的题目要花费的时间
int l,r,minn=1e9,ans;
void dfs(int p,int n) //
{
//递归结束条件
if(p>s[n])//一共就4个科目,如果做完了就返回
{
minn=min(minn,max(l,r));
return;
}
l+=a[n][p];
dfs(p+1,n);//下一道题目
l-=a[n][p]; //
r+=a[n][p];
dfs(p+1,n);
r-=a[n][p];
}
int main()
{
//读取4个科目及其对应的题目数量
for(int i=1;i<=4;i++)cin>>s[i];
//输入每个科目每道题花费的时间
for(int i=1;i<=4;i++)//4个科目
{
for(int j=1;j<=s[i];j++)//每一科习题集每道题目所消耗的时间。
{
cin>>a[i][j];
}
l=0,r=0; //左脑右脑都还没用
dfs(1,i);//从第一个科目开始,做第i个题目
ans+=minn;
minn=1e9;//科一做完了,重置一下,还有科二科三科四
}
cout<<ans<<endl;
return 0;
}