zoukankan      html  css  js  c++  java
  • UESTC 1599.wtmsb-STL(priority_queue)

    wtmsb

    Time Limit: 1000/100MS (Java/Others)    

    Memory Limit: 131072/131072KB (Java/Others)

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

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

    Input

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

    Output

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

    Sample input and output

    Sample InputSample Output
    3
    1 2 9
    

    15

    Hint

    1n200001≤n≤20000 ,
    1Ai2000

    题意就是求和,一开始没搞懂题意,后来想明白了,就拿数据来说,1+2=3,再把3扔回去,3+9=12,所以就是3+12=15。

    然而自己按自己想的写了一个(没有技术含量可言(;´д`)ゞ),样例啊,自己随便给的数据也都过了,但是交上就wa了,搞不清为什么。优先队列,要用这个写。

    代码:

    #include<iostream>
    #include<cstdio>
    #include<queue>
    using namespace std;
    typedef long long ll;
    const int N=2e4+10;
    priority_queue<ll,vector<ll>,greater<ll> > gg;
    int main(){
            int n,a,i,b;
            ll ans=0;
            scanf("%d",&n);
            for(i=0;i<n;i++){
                scanf("%d",&a);gg.push(a);
            }
        int len=gg.size();
        while(len>=2){
            a=gg.top();gg.pop();
            b=gg.top();gg.pop();
            a=a+b;ans+=a;
            gg.push(a);len--;
        }
        printf("%lld
    ",ans);
         return 0;
    }

    有点难过(╯°Д°)╯︵┻━┻

     
     
  • 相关阅读:
    指针符号的优先级
    逆序链表建立和输出
    typedef关键字编写步骤
    CasePlayer2-嵌入式软件静态解析工具
    嵌入式软件测试工具和测试方法
    单元测试必要性
    基于winAMS、CasePlayer2嵌入式软件单元测试
    嵌入式软件测试软件--winAMS支持芯片
    基于模型开发 Back-to-Back测试统合工具-MC-Verifier
    单元测试工具-winAMS
  • 原文地址:https://www.cnblogs.com/ZERO-/p/7155704.html
Copyright © 2011-2022 走看看