• 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;
    }

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

     
     
  • 相关阅读:
    webpack采坑十连跳
    白板编程
    Mysql加锁过程详解(1)-基本知识
    java单例模式几种实现方式
    mysql 幻读的详解、实例及解决办法
    MySQL执行计划extra中的using index 和 using where using index 的区别
    mysql INSERT ... ON DUPLICATE KEY UPDATE语句
    tk mybatis通用mapper,复杂and or条件查询
    tk.mybaits
    docker 笔记
  • 原文地址:https://www.cnblogs.com/ZERO-/p/7155704.html
Copyright © 2020-2023  润新知