百练4080:Huffman编码树

简介: 百练4080:Huffman编码树

BaiLian4080 Huffman编码树

20210219121500738.png


解题思路


所求即为最短路径之和, 也等于新生成节点频率之和.所以可以使用优先队列每次获取一个最小值和次小值, 所求之和即为新生成节点的频率…再依次获取即可.

这个题还用到了priority_queue.使用如下:

Priority_queue:优先队列, 不仅可以存储数据还可以按照某种规则进行排序.每次的push, 和pop操作, 里面数据都会进行动态调整, 把优先级高的放在前面.

使用 :

template <class T, class Container = vector,

class Compare = less > class priority_queue;

T:数据类型, 第三个参数默认不写是从大到小, 如果从小到大可以使用greater.


代码

#include<iostream>
#include<queue>
using namespace std;
priority_queue<int, vector<int>, greater<int> >Q;
int total = 0;
int main()
{
  int n,w;
  cin >> n;
  while (n--)
  {
    cin >> w;
    Q.push(w);
  }
  while (Q.size() != 1)
  {
    int sum = 0;
    sum += Q.top();
    Q.pop();
    sum += Q.top();
    Q.pop();
    Q.push(sum);
    total += sum;
  }
  cout << total << endl;
  return 0;
}
相关文章
|
10月前
|
存储 算法
数据结构实验十二 哈夫曼树及编码
数据结构实验十二 哈夫曼树及编码
49 0
|
6月前
|
算法
代码随想录算法训练营第二十二天 | LeetCode 669. 修剪二叉搜索树、108. 将有序数组转换为二叉搜索树、538. 把二叉搜索树转换为累加树
代码随想录算法训练营第二十二天 | LeetCode 669. 修剪二叉搜索树、108. 将有序数组转换为二叉搜索树、538. 把二叉搜索树转换为累加树
30 0
|
算法 JavaScript 前端开发
日拱算法:双指针解“压缩字符串”
给你一个字符数组 chars ,请使用下述算法压缩: 从一个空字符串 s 开始。对于 chars 中的每组 连续重复字符 : 如果这一组长度为 1 ,则将字符追加到 s 中。 否则,需要向 s 追加字符,后跟这一组的长度。 压缩后得到的字符串 s 不应该直接返回 ,需要转储到字符数组 chars 中。需要注意的是,如果组长度为 10 或 10 以上,则在 chars 数组中会被拆分为多个字符。 请在 修改完输入数组后 ,返回该数组的新长度。
|
算法 JavaScript Serverless
日拱算法之判断平衡二叉树
输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。
|
机器学习/深度学习
LeetCode每日一题(13)——建立四叉树(递归)
建立四叉树 1.题目 2.示例 3.思路 4.代码
110 0
LeetCode每日一题(13)——建立四叉树(递归)
|
机器学习/深度学习 算法
LeetCode——427. 建立四叉树
LeetCode——427. 建立四叉树
68 0
LeetCode——427. 建立四叉树
|
算法
【算法竞赛进阶指南】車的放置(行列模型二分图最大匹配+匈牙利算法)
【算法竞赛进阶指南】車的放置(行列模型二分图最大匹配+匈牙利算法)
81 0
|
机器学习/深度学习
LeetCode每日一题——427. 建立四叉树
给你一个 n * n 矩阵 grid ,矩阵由若干 0 和 1 组成。请你用四叉树表示该矩阵 grid 。
103 0
LeetCode每日一题——427. 建立四叉树
LeetCode每日一题——669. 修剪二叉搜索树
给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]中。
36 0
LeetCode每日一题——669. 修剪二叉搜索树
|
机器学习/深度学习 算法 安全
【Python 百练成钢】时间调整、二进制数、回文素数、字母距离、CTF、Huffuman树、抽奖、前后缀最值、纯质数求解、花园灌溉
【Python 百练成钢】时间调整、二进制数、回文素数、字母距离、CTF、Huffuman树、抽奖、前后缀最值、纯质数求解、花园灌溉
187 0
【Python 百练成钢】时间调整、二进制数、回文素数、字母距离、CTF、Huffuman树、抽奖、前后缀最值、纯质数求解、花园灌溉