P2392 kkksc03考前临时抱佛脚 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
#include
#include
#include
using namespace std;
int a[4][25], dp[2000];
int s[4];
int sum[4];
int main()
{
cin >> s[0] >> s[1] >> s[2] >> s[3];
for(int i = 0; i < 4; ++ i )
for(int j = 0; j < s\[i\]; ++ j)
cin >> a\[i\]\[j\], sum\[i\] += a\[i\]\[j\];
int res = 0;
for(int i = 0; i < 4; ++ i)
{
memset(dp, 0, sizeof dp);
int ans = 0;
for(int k = 0; k < s\[i\]; ++ k)
for(int j = sum\[i\]/2; j >= a\[i\]\[k\]; -- j)
{
dp\[j\] = max(dp\[j\], dp\[j-a\[i\]\[k\]\] + a\[i\]\[k\]);
ans = max(ans, dp\[j\]);
}
res += sum\[i\] - ans;
}
cout << res << endl;
return 0;
}
#include
using namespace std;
int a[4][25];
int s[4];
bool st[30];
int l = 0, r = 0, res = 0, num = 999999999;
void dfs(int i, int j)
{
if(j < 0)
{
num = min(num, max(l, r));
return;
}
l += a[i][j];
dfs(i, j-1);
l -= a[i][j];
r += a[i][j];
dfs(i, j-1);
r -= a[i][j];
}
int main()
{
cin >> s[0] >> s[1] >> s[2] >> s[3];
for(int i = 0; i < 4; ++ i )
for(int j = 0; j < s\[i\]; ++ j)
cin >> a\[i\]\[j\];
for(int i = 0; i < 4; ++ i)
{
dfs(i, s\[i\]-1);
res+= num;
l = 0, r = 0, num = 999999999;
}
cout << res << endl;
return 0;
}
手机扫一扫
移动阅读更方便
你可能感兴趣的文章