问题描述
  Huffman树在编码中有着广泛的应用。在这里,我们只关心Huffman树的构造过程。
  给出一列数{pi}={p0, p1, …, pn-1},用这列数构造Huffman树的过程如下:
  1. 找到{pi}中最小的两个数,设为pa和pb,将pa和pb从{pi}中删除掉,然后将它们的和加入到{pi}中。这个过程的费用记为pa + pb。
  2. 重复步骤1,直到{pi}中只剩下一个数。
  在上面的操作过程中,把所有的费用相加,就得到了构造Huffman树的总费用。
  本题任务:对于给定的一个数列,现在请你求出用该数列构造Huffman树的总费用。

  例如,对于数列{pi}={5, 3, 8, 2, 9},Huffman树的构造过程如下:
  1. 找到{5, 3, 8, 2, 9}中最小的两个数,分别是2和3,从{pi}中删除它们并将和5加入,得到{5, 8, 9, 5},费用为5。
  2. 找到{5, 8, 9, 5}中最小的两个数,分别是5和5,从{pi}中删除它们并将和10加入,得到{8, 9, 10},费用为10。
  3. 找到{8, 9, 10}中最小的两个数,分别是8和9,从{pi}中删除它们并将和17加入,得到{10, 17},费用为17。
  4. 找到{10, 17}中最小的两个数,分别是10和17,从{pi}中删除它们并将和27加入,得到{27},费用为27。
  5. 现在,数列中只剩下一个数27,构造过程结束,总费用为5+10+17+27=59。
输入格式
  输入的第一行包含一个正整数n(n<=100)。
  接下来是n个正整数,表示p0, p1, …, pn-1,每个数不超过1000。
输出格式
  输出用这些数构造Huffman树的总费用。
样例输入
5
5 3 8 2 9
样例输出
59

#include <iostream>
#include <vector>
#include <algorithm>
int cmp1(int a, int b) {return a > b;
}
using namespace std;
int main() {int n;int price = 0;vector<int> v;cin >> n;for(int i = 0; i < n; i++) {int temp;cin >> temp;v.push_back(temp);}int size = v.size();while(size >= 2) {sort(v.begin(), v.end(), cmp1);int t = v[size-1] + v[size-2];price += t;v.pop_back();v.pop_back();v.push_back(t);size = v.size();}cout << price;return 0;
}

蓝桥杯BASIC-28 基础练习 Huffuman树相关推荐

  1. python【蓝桥杯vip练习题库】—Huffuman树

    Huffuman树 问题描述 Huffman树在编码中有着广泛的应用.在这里,我们只关心Huffman树的构造过程. 给出一列数{pi}={p0, p1, -, pn-1},用这列数构造Huffman ...

  2. python【蓝桥杯vip练习题库】BASIC-28Huffuman树(贪心 Huffuman)

    这道题输入的数组右边依旧有个空格!md,这破样例对python真坑. 试题 基础练习 Huffuman树 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 Huffman树在编码中有着 ...

  3. 基础练习 Huffuman树 (优先队列)

    基础练习 Huffuman树 时间限制:1.0s   内存限制:512.0MB 问题描述 Huffman树在编码中有着广泛的应用.在这里,我们只关心Huffman树的构造过程. 给出一列数{pi}={ ...

  4. 蓝桥杯练习系统 基础练习 全部习题 题目及AC代码(包括VIP试题)C++

    蓝桥杯练习系统 基础练习 全部习题ac代码 看在作者这么肝的份上点个赞吧

  5. 蓝桥杯物联网竞赛基础图文教程——时钟选择

    蓝桥杯物联网竞赛基础图文教程--时钟选择 1什么是时钟 时钟是单片机运行的基础,时钟信号推动单片机内各个部分执行相应的指令.时钟系统就是CPU的脉搏,决定cpu速率,像人的心跳一样 只有有了心跳,人才 ...

  6. 蓝桥杯练习系统-基础练习34道题解答答案全汇总(c/c++)

    蓝桥杯练习系统BASIC-13 数列排序(c++,利用sort) 蓝桥杯练习系统BASIC-12 十六进制转八进制(c++,利用string) 蓝桥杯练习系统BASIC-11 十六进制转十进制(c++ ...

  7. 【蓝桥杯】Python基础:经济基础决定上层建筑!

    前言:今年4月第一次参加蓝桥杯比赛,选择的Python 研究生组赛道.在备赛过程中,发现经常会用到一些编程小技巧,因此笔者整理了一些蓝桥杯Python组编程基础常用的内容,以便日后备用.如果有小伙伴也 ...

  8. 蓝桥杯Java必备基础知识总结大全【3W字】持续更新中

    本文会持续更新,如果对您有帮助的话可以点点关注,双击 本人2021年蓝桥杯C++B组国二,今年转战Java,并整理此文,希望能够对大家有所帮助,第一次写这么长的文章,可能有的地方写的不是很好,还请大家 ...

  9. 【蓝桥杯】 《3W字数总结》 蓝桥杯Java必备基础知识以及国赛真题解析

    本文会持续更新,如果对您有帮助的话可以点点关注,双击 本人2021年蓝桥杯C++B组国二,今年转战Java,并整理此文,希望能够对大家有所帮助,第一次写这么长的文章,可能有的地方写的不是很好,还请大家 ...

  10. 蓝桥杯学习记录-基础练习

    注:每天都更新哦~,题目下面的代码都是经过测试正确的,欢迎有更好算法的大神指正,我会把您的代码也附上,相互学习. 蓝桥杯-基础练习:所有题 十六进制转八进制 进制转换 字符 循环 十六进制转十进制 进 ...

最新文章

  1. python多久更新一次_Python Tkinter,每秒钟更新一次
  2. 一个listMap里map其中的一个字段的值相同,如何判断这个字段相同,就把这个map的其他字段存入另一个map中...
  3. mysql 最长字符串_那些年的Mysql
  4. android:Activity启动模式
  5. NYOJ 933 Bob's Print Service
  6. 隐藏界面没有必要应用场景
  7. 在ARM Linux下使用GPIO模拟SPI时序详解
  8. 前端学习(2471):vue-echarts和echarts的区别:
  9. c语言万年历设计背景,万年历设计报告
  10. linux php扩展 mysqli,[linux]PHP添加mysqli扩展 | 学步园
  11. mongo 监听指定语句
  12. 简单的五子棋游戏(C语言)
  13. cad打开卡死_CAD一打开就卡死,重装也不管用怎么办?
  14. 应对微软20号黑屏的几种解决办法
  15. VSCode配置编译MSVC程序
  16. 人工智能实验-使用遗传算法求函数最值
  17. MySQL学习笔记整理(上部)
  18. 2018 11.1 PION 模拟赛
  19. 卸载微软拼音2003
  20. USB 设备驱动之设备接入梳理(六)

热门文章

  1. 关于WideCharToMultiByte来解码UTF8
  2. 洛谷P2568 GCD(莫比乌斯反演)
  3. Android集成一个新产品时,lunch的product name和device name注意事项
  4. ssm+redis 如何更简洁的利用自定义注解+AOP实现redis缓存
  5. python之高性能网络编程并发框架eventlet实例
  6. 网络研讨会的邀请:SQL优化:你不是一个人在战斗
  7. 转发网络《iOS网络编程与云端应用最佳实践》微博转发送书了
  8. FIN7 正在转向密码重置和软件供应链攻击
  9. 古早但有用:CISA 发布15个正遭利用的老旧漏洞
  10. 微软称伊朗国家黑客攻击美国国防技术公司