合并果子是一个堆操作
二叉堆的思想我好象还有点记忆
其实你只要搞懂这个数据样例就能明白了
#include
#include
#include
#include
#include
#include<>
using namespace std;
int n,s=0,t,a,b;
priority_queue <int,vector<int>,greater<int> > q;//自动二叉堆定义
int main()
{
cin>>n;
for(int i=0;i<n;i++)
{
cin>>t;
q.push(t);
}
while(1)
{
if(q.size()==1)
break;
a=q.top();
q.pop();
b=q.top();
q.pop();
s=s+a+b;
q.push(a+b);
}
cout<<s<<endl;
return 0;
}