刚学回溯,被恶心死了嘤嘤嘤
#include <bits/stdc++.h>
using namespace std;
int s[10000010],f[10100][110],sum[10000010];
int le,leri,ans=1000000000,cnt;
void dfs(int now,int i)
{
if(now>s[i])
{
leri=max(le,sum[i]-le);
if(leri<ans) ans=leri;
return ;
}
le+=f[i][now];
dfs(now+1,i);
le-=f[i][now];
}
int main()
{
for(int i=1;i<=4;i++)
{
cin>>s[i];
}
for(int i=1;i<=4;i++)
{
le=0;
for(int j=1;j<=s[i];j++)
{
cin>>f[i][j];
sum[i]+=f[i][j];
}
dfs(1,i);
cnt+=ans;
}
cout<<cnt<<endl;
return 0;
}