UVa 10954 Add All:哈弗曼树

10954 - Add All

Time limit: 3.000 seconds

http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=113&page=show_problem&problem=1895

Yup!! The problem name reflects your task; just add a set of numbers. But you may feel yourselves condescended, to write a C/C++ program just to add a set of numbers. Such a problem will simply question your erudition. So, let’s add some flavor of ingenuity to it.

Addition operation requires cost now, and the cost is the summation of those two to be added. So, to add 1 and 10, you need a cost of 11. If you want to add 1, 2 and 3. There are several ways –

纯练手。

完整代码:

/*0.035s*/

#include<cstdio>
#include<queue>
#include<vector>
#include<functional>
using namespace std;
typedef long long ll;  

priority_queue<ll, vector<ll>, greater<ll> > q;  

int main()
{
    int n;
    ll x, sum;
    while (scanf("%d", &n), n)
    {
        while (!q.empty()) q.pop();
        while (n--)
        {
            scanf("%lld", &x);
            q.push(x);
        }
        sum = 0;
        while (true)
        {
            x = q.top();
            q.pop();
            x += q.top();
            q.pop();
            sum += x;
            if (!q.empty()) q.push(x);
            else break;
        }
        printf("%lld\n", sum);
    }
    return 0;
}

作者署名:csdn博客 synapse7

查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/sjjg/

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索include
, while
, sum
, add
, to
,   Sum Problem 
, problem
, priority_queue
, priority_queue详解
, priority_queue实例
, 哈弗曼算法
哈弗曼编码
uva 10954、ea109540592nl、,以便于您获取更多的相关知识。

时间: 2024-08-28 18:57:31

UVa 10954 Add All:哈弗曼树的相关文章

哈弗曼树与哈弗曼编码

哈弗曼,一个在几乎所有讲数据结构的书中都有出现过的人物,他的鼎鼎大名想必就不用我多说了. 这一次来给大家讲解一下哈弗曼树的构建与哈弗曼编码的基本原理,有什么用呢?别急,还是先学会创建 一棵哈弗曼树吧. 哈弗曼树又称最优二叉树,最优二叉树就是带权路径长度WPL最小的二叉树,那么我们就得搞清几个概 念: 1. 路径长度:从树中的一个结点到另一个结点之间的分支构成这两个结点的路径,路径上的分支数目 称为路径长度. 2. 树的路径长度:从树根到每一个结点的路径长度之和,我们所说的完全二叉树就是这种路径长

uva 10954 - Add All

点击打开链接uva 10954 题目意思:     有n个数需要求和,每一次求和都要付出和当前和相等的代价,例如1+2 = 3,那么这一次的代价就是3,问我们怎么选择求和的次序才能使得这个代价的总和最小. 解题思路:     1:贪心                        2:先看一下计算n个数需要几步:                              n =  1    0                              n =  2    1          

UVa 10954:Add All

链接: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=113&page=show_problem&problem=1895 原题: Yup!! The problem name reflects your task; just add a set of numbers. But you may feel yourselves condescended, to wri

哈弗曼压缩与解压的原理及对象化实现

这一次主要是跟大家探讨一下哈弗曼压缩的原理及实现,由于过程化的实现更加容易理解也更加直观 ,所以这里首先会分步骤跟大家讲解一下哈弗曼压缩的具体实现方法,然后再与大家分享一下对象化的实 现. 首先,我们要知道文件为什么能压缩? 文件是由字节所组成的,一个字节的长度为8位,所以最多只存在256种字节,而一个文件中一般存在 许多相同的字节,我们把相同的字节以一种更加精简的方式表示,就完成了我们所说的压缩. 哈弗曼压缩的原理是什么? 上次博客中提到了哈弗曼编码,但是只是粗略的带过了,这一次举一个具体的例

java实现哈弗曼编码与反编码实例分享(哈弗曼算法)_java

复制代码 代码如下: //哈弗曼编码的实现类public class HffmanCoding {    private int charsAndWeight[][];// [][0]是 字符,[][1]存放的是字符的权值(次数)    private int hfmcoding[][];// 存放哈弗曼树    private int i = 0;// 循环变量    private String hcs[];    public HffmanCoding(int[][] chars) {  

九度题目1172:哈夫曼树

题目1172:哈夫曼树 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:4366 解决:1827 题目描述: 哈夫曼树,第一行输入一个数n,表示叶结点的个数.需要用这些叶结点生成哈夫曼树,根据哈夫曼树的概念,这些结点有权值,即weight,题 目需要输出所有结点的值与权值的乘积之和. 输入: 输入有多组数据. 每组第一行输入一个数n,接着输入n个叶节点(叶节点权值不超过100,2<=n<=1000). 输出: 输出权值. 样例输入: 5  1 2 2 5 9 样例输出: 37 来源:

求解电文哈弗曼加权路径大小

# include <iostream> using namespace std ; typedef struct { unsigned int weight ; //节点的权值 unsigned int parent ; unsigned int lchild ; unsigned int rchild ; }HTNode,*HuffmanTree; //typedef char** HuffmanCode ; void InitHuffmanTree(HuffmanTree & ,

经典算法题每日演练——第十三题 赫夫曼树

       赫夫曼树又称最优二叉树,也就是带权路径最短的树,对于赫夫曼树,我想大家对它是非常的熟悉,也知道它的应用场景, 但是有没有自己亲手写过,这个我就不清楚了,不管以前写没写,这一篇我们来玩一把.   一:概念  赫夫曼树里面有几个概念,也是非常简单的,先来看下面的图: 1. 基础概念 <1>  节点的权: 节点中红色部分就是权,在实际应用中,我们用"字符"出现的次数作为权. <2>  路径长度:可以理解成该节点到根节点的层数,比如:"A&quo

java哈夫曼树实例代码_java

本文实例为大家分享了哈夫曼树java代码,供大家参考,具体内容如下 package boom; import java.util.ArrayDeque; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Queue; class Node<T> implements Comparable<Node<T>>{ private T