zoukankan      html  css  js  c++  java
  • UESTC 1599 wtmsb

    这天,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;
    }
  • 相关阅读:
    C# 执行bat文件 PHP
    windows服务操作 sc批处理 PHP
    HTML 彩虹 PHP
    C# 简易日志记录类 PHP
    C# 读写INI文件 PHP
    .NET Framework PHP
    序列号备忘 PHP
    获取浏览器版本信息
    数据库中Image字段存储读取数据
    [转]装机推荐 5000元铸造最强游戏平台
  • 原文地址:https://www.cnblogs.com/shinianhuanniyijuhaojiubujian/p/7147511.html
Copyright © 2011-2022 走看看