蓝桥杯BASIC-28 基础练习 Huffuman树
问题描述
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树相关推荐
- python【蓝桥杯vip练习题库】—Huffuman树
Huffuman树 问题描述 Huffman树在编码中有着广泛的应用.在这里,我们只关心Huffman树的构造过程. 给出一列数{pi}={p0, p1, -, pn-1},用这列数构造Huffman ...
- python【蓝桥杯vip练习题库】BASIC-28Huffuman树(贪心 Huffuman)
这道题输入的数组右边依旧有个空格!md,这破样例对python真坑. 试题 基础练习 Huffuman树 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 Huffman树在编码中有着 ...
- 基础练习 Huffuman树 (优先队列)
基础练习 Huffuman树 时间限制:1.0s 内存限制:512.0MB 问题描述 Huffman树在编码中有着广泛的应用.在这里,我们只关心Huffman树的构造过程. 给出一列数{pi}={ ...
- 蓝桥杯练习系统 基础练习 全部习题 题目及AC代码(包括VIP试题)C++
蓝桥杯练习系统 基础练习 全部习题ac代码 看在作者这么肝的份上点个赞吧
- 蓝桥杯物联网竞赛基础图文教程——时钟选择
蓝桥杯物联网竞赛基础图文教程--时钟选择 1什么是时钟 时钟是单片机运行的基础,时钟信号推动单片机内各个部分执行相应的指令.时钟系统就是CPU的脉搏,决定cpu速率,像人的心跳一样 只有有了心跳,人才 ...
- 蓝桥杯练习系统-基础练习34道题解答答案全汇总(c/c++)
蓝桥杯练习系统BASIC-13 数列排序(c++,利用sort) 蓝桥杯练习系统BASIC-12 十六进制转八进制(c++,利用string) 蓝桥杯练习系统BASIC-11 十六进制转十进制(c++ ...
- 【蓝桥杯】Python基础:经济基础决定上层建筑!
前言:今年4月第一次参加蓝桥杯比赛,选择的Python 研究生组赛道.在备赛过程中,发现经常会用到一些编程小技巧,因此笔者整理了一些蓝桥杯Python组编程基础常用的内容,以便日后备用.如果有小伙伴也 ...
- 蓝桥杯Java必备基础知识总结大全【3W字】持续更新中
本文会持续更新,如果对您有帮助的话可以点点关注,双击 本人2021年蓝桥杯C++B组国二,今年转战Java,并整理此文,希望能够对大家有所帮助,第一次写这么长的文章,可能有的地方写的不是很好,还请大家 ...
- 【蓝桥杯】 《3W字数总结》 蓝桥杯Java必备基础知识以及国赛真题解析
本文会持续更新,如果对您有帮助的话可以点点关注,双击 本人2021年蓝桥杯C++B组国二,今年转战Java,并整理此文,希望能够对大家有所帮助,第一次写这么长的文章,可能有的地方写的不是很好,还请大家 ...
- 蓝桥杯学习记录-基础练习
注:每天都更新哦~,题目下面的代码都是经过测试正确的,欢迎有更好算法的大神指正,我会把您的代码也附上,相互学习. 蓝桥杯-基础练习:所有题 十六进制转八进制 进制转换 字符 循环 十六进制转十进制 进 ...
最新文章
- python多久更新一次_Python Tkinter,每秒钟更新一次
- 一个listMap里map其中的一个字段的值相同,如何判断这个字段相同,就把这个map的其他字段存入另一个map中...
- mysql 最长字符串_那些年的Mysql
- android:Activity启动模式
- NYOJ 933 Bob's Print Service
- 隐藏界面没有必要应用场景
- 在ARM Linux下使用GPIO模拟SPI时序详解
- 前端学习(2471):vue-echarts和echarts的区别:
- c语言万年历设计背景,万年历设计报告
- linux php扩展 mysqli,[linux]PHP添加mysqli扩展 | 学步园
- mongo 监听指定语句
- 简单的五子棋游戏(C语言)
- cad打开卡死_CAD一打开就卡死,重装也不管用怎么办?
- 应对微软20号黑屏的几种解决办法
- VSCode配置编译MSVC程序
- 人工智能实验-使用遗传算法求函数最值
- MySQL学习笔记整理(上部)
- 2018 11.1 PION 模拟赛
- 卸载微软拼音2003
- USB 设备驱动之设备接入梳理(六)