测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A17483. 平衡运输

填空题 困难

题目描述

平衡运输

题目描述

远古遗迹中发掘出了 n 件魔力核心,第 i 件核心蕴含的能量为 ki

为了安全运输,需要将这些核心分配到两个不同的能量舱(记为舱 A 和舱 B)中。

每件核心必须整个放入一个舱,不可拆分。

分配完成后,设舱 A 的总能量为 sa,舱 B 的总能量为 sb

为了平衡运输风险,希望两个舱中总能量较大的一方尽可能小,即最小化 max(sa,sb)。

请你计算这个最小的最大值。

输入格式

第一行,一个整数 n。

第二行,n 个整数 k1,k2,…,kn

输出格式

输出一个整数,表示 max(sa,sb) 的最小可能值。

输入样例#1

5
2 3 5 10 12

输出样例#1

17

输入样例#2

6
22 25 26 45 22 31

输出样例#2

89

说明提示

2≤n≤20

1≤ki≤108

参考答案

#include<iostream> int N; int A[20]; int S = 0; int solve(int i, int sum) { if (i == N) { return std::max(sum, S - sum); } else { auto pick = solve(i + 1, sum + A[i]); auto drop = solve(i + 1, sum); return std::min(pick, drop); } } int main() { std::cin >> N; for (int i = 0; i < N; ++i) { std::cin >> A[i]; S += A[i]; } std::cout << solve(0, 0) << "\n"; }
上一题 下一题