码迷,mamicode.com
首页 > 其他好文 > 详细

UESTC 1599 wtmsb

时间:2017-07-10 22:10:03      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:sam   ret   targe   color   cstring   stream   queue   main   push   

这天,AutSky_JadeK看到了n张图片,他忍不住说道:“我TM社保!”。
技术分享

每张图片有一个社保值,他可以合并两张图片,合并所得的图片的社保值是原来两张图片的社保值之和。
每次合并需要消耗的体力也是原来两张图片的社保值之和。 显然,n?1次合并之后,只剩下一张图片。
他想知道,在这个过程中,他消耗的总体力最少是多少。

Input

第一行包含一个整数n,
第二行包含n个整数A1,A2,…,An,代表n张图片的社保值。

Output

输出一行,包含一个整数,代表他消耗的总体力最少是多少。

Sample input and output

Sample Input Sample Output
3
1 2 9
15


Hint

1≤n≤200001≤n≤20000,
1≤Ai≤20001≤Ai≤2000

 

解题思路 优先队列

#include <iostream>
#include <cstdio>
#include <cstring>
#include <queue>
#include <cmath>
#include <vector>
#include <algorithm>
using namespace std;
typedef long long ll;
int main()
{
    priority_queue<ll,vector<ll>,greater<ll> >q;
    ll n,x,a,b;
    ll ans=0;
    cin>>n;
    for(int i=0;i<n;i++)
    {
        cin>>x;
        q.push(x);
    }
    while(q.size()>=2)
    {
        a=q.top();
        q.pop();
        b=q.top();
        q.pop();
        a=a+b;
        ans+=a;
        q.push(a);
    }
    cout<<ans<<endl;
    return 0;
}

 

UESTC 1599 wtmsb

标签:sam   ret   targe   color   cstring   stream   queue   main   push   

原文地址:http://www.cnblogs.com/shinianhuanniyijuhaojiubujian/p/7147511.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!