思路
这个题我最开始想的是动态,emmm,不会做,再想的是dfs,emmm,我感觉能行,还是写不出来,然后看了下题解,emmm,贪心??????
我暴毙了,妈妈救我
先将整个数组排序,然后合并最小的,合并之后,再排序,再合并,直到还剩一个,emmm,不是当时怎么不想出来
代码实现
#include <iostream>
#include <algorithm>
using namespace std;
int a[10000 + 9];
int n , sum = 0;
int main()
{
int k;
cin >> n;
for (int i = 1; i <= n; i++)cin >> a[i];
t = n - 1;
k = 1; //排序的第一个元素标记
while (t--)
{
sort(a + k, a + n + 1); //从小到大排序
Sum += (a[k] + a[k + 1]); //合并
a[k + 1] += a[k];
a[k] = 0;
k += 1;
}
cout << Sum << endl;
return 0;
}