148. 合并果子

经典哈夫曼树的模型,每次合并重量最小的两堆果子即可。

const int N=10010;
int a[N];
int n;

int main()
{
    cin>>n;

    priority_queue<int,vector<int>,greater<int> > heap;
    for(int i=1;i<=n;i++) cin>>a[i],heap.push(a[i]);
    
    int res=0;
    while(heap.size()>1)
    {
        int a=heap.top();
        heap.pop();
        int b=heap.top();
        heap.pop();
        heap.push(a+b);
        res+=a+b;
    }
    
    cout<<res<<endl;
    
    //system("pause");
}
posted @ 2020-12-15 20:14  Dazzling!  阅读(77)  评论(0编辑  收藏  举报