zoukankan      html  css  js  c++  java
  • 优先队列的使用

    windows live writer

    终于安装好了windows live writer.(不知道什么问题一直出问题)。简直完美!

    试一下的确很爽,先来一道优先队列压压惊!

    题目描述

    最近,Nova君遇到了一件非常棘手的问题。他需要整理非常多的解题报告。每份解题报告的题目数量是不定的。Nova君每次需要将两份报告的题目解析合成到一份里。假设两份报告的题解数分别为a和b,那么合成这两份报告消耗Nova君a+b的hp值。现在有n份报告,题解数分别为a0,a1,a2,,,an-1,请问Nova最少消耗多少hp?

    输入

    多组测试数据。每组数据,第一行为一个正整数n(INT范围内),代表报告份数,接下来一行,包含n个正整数(INT范围内)a0,a1,a2,,,an-1,代表每份报告的题解数。

    输出

    对于每组数据,输出一行,代表Nova需要付出的最少的hp值

    输入样例

    4
    3 5 7 11

    输出样例

    49

    Hint

    陈题,然而请用优先队列实现

     代码实现:

     1 #include <bits/stdc++.h>
     2 #define max_size 1000010
     3 
     4 using namespace std;
     5 int a[max_size];
     6 
     7 struct cmp{
     8     bool operator()(int &a,int &b){
     9     return a>b;
    10     }
    11 };
    12 
    13 int main(){
    14     priority_queue<int,vector<int>,cmp>q;
    15     int n;
    16     while(~scanf("%d",&n)){
    17         long long ans=0;
    18         int num;
    19         for(int i=1;i<=n;i++){
    20             scanf("%d",&num);
    21             q.push(num);
    22         }
    23         int key,a,b;
    24         while(!q.empty()){
    25         a=q.top();
    26         q.pop();
    27         if(q.empty())break;
    28         b=q.top();
    29         q.pop();
    30         ans+=a+b;
    31         key=a+b;
    32         q.push(key);
    33         }
    34         cout<<ans<<endl;
    35     }
    36 }
  • 相关阅读:
    程序员累了怎么办?
    vue.js 组件注册实例
    background新增的N个强悍功能!!!
    相思别去问得失
    你说的我正在经历
    千折扇
    盼盼Degenerate——清除浮动的方法
    let 和 var定义变量的区别-盼盼Degenerate
    winform关闭窗体时,给用户友好提示!
    web学习笔记1--HTML
  • 原文地址:https://www.cnblogs.com/zpfbuaa/p/4966857.html
Copyright © 2011-2022 走看看