题解:本题主要考查优先队列STL,贪心。若要体力最小,就要将最小的果合并,合并后的果子再入队。
代码如下:
#include<iostream>
#include<queue>
using namespace std;
priority_queue<int,vector<int>,greater<int> >b;
int i,a,n,q,p,num=0;
int main()
{
cin>>n;
for(i=1;i<=n;i++)
{
cin>>a;
b.push(a);
}
while(2<=b.size())
{
q=b.top();b.pop();
p=b.top();b.pop();
num=num+q+p;
b.push(q+p);
}
cout<<num;
return 0;
}