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

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

     
     
  • 相关阅读:
    钉钉扫码登录前端页面实现
    本地开发的jar包放到本地maven仓库
    mybatise 设置全局变量实例
    版本控制器:Git
    PIP安装源
    Django跨域问题
    vue项目开发安装流程
    浅谈CSRF(Cross-site request forgery)跨站请求伪造(写的非常好)
    explicit抑制隐型转换
    拷贝构造函数
  • 原文地址:https://www.cnblogs.com/ZERO-/p/7155704.html
Copyright © 2011-2022 走看看