数据结构——哈夫曼树

ops/2025/2/28 11:16:13/

可参考priority_queue(优先队列)讲解_priority——queue-CSDN博客

例题148. 合并果子 - AcWing题库

用优先队列(堆-完全二叉树)来实现哈夫曼树,每次取小根堆队头两元素相加为一个,pop完再push进去,相当于模拟哈夫曼树的构造了。

代码如下:

#include <bits/stdc++.h>using namespace std;
#define fs first
#define sc second
#define endl '\n'
#define all(x) x.begin(), x.end()
typedef long long ll;
typedef pair<int, int> PII;void solve(){priority_queue<int,vector<int>,greater<int>> q;//小根堆int n;cin>>n;for(int i=0;i<n;i++){int x;cin>>x;q.push(x);}int ans=0;while(q.size()>1){//取最小的两个元素int a=q.top();q.pop();int b=q.top();q.pop();ans+=(a+b);q.push(a+b);}cout<<ans<<endl;
}int main(){cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);int t;t=1;while (t--){solve();}return 0;
}


http://www.ppmy.cn/ops/161941.html

相关文章

Spring 核心技术解析【纯干货版】- XIV:Spring 消息模块 Spring-Jms 模块精讲

在现代分布式系统中&#xff0c;消息队列&#xff08;Message Queue&#xff0c;MQ&#xff09;扮演着至关重要的角色&#xff0c;它不仅能够解耦系统各个模块&#xff0c;还能提升系统的可扩展性和可靠性。JMS&#xff08;Java Message Service&#xff09;作为 Java EE 规范中…

(八)Java-Collection

一、Collection接口 1.特点 Collection实现子类可以存放多个元素&#xff0c;每个元素可以是Object&#xff1b; 有些Collection的实现类&#xff0c;可以存放重复的元素&#xff0c;有些不可以&#xff1b; 有些Collection的实现类&#xff0c;有些是有序的&#xff08;Li…

分治算法、动态规划、贪心算法、分支限界法和回溯算法的深度对比

1. 分治算法 (Divide and Conquer) 核心思想 分治法三步曲&#xff1a; 分解&#xff08;Divide&#xff09;&#xff1a;将原问题拆分为多个子问题解决&#xff08;Conquer&#xff09;&#xff1a;递归解决子问题合并&#xff08;Combine&#xff09;&#xff1a;合并子问题…

LeetCode 701.二叉搜索树中的插入操作

题目描述 给定二叉搜索树&#xff08;BST&#xff09;的根节点 root 和要插入树中的值 value &#xff0c;将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据 保证 &#xff0c;新值和原始二叉搜索树中的任意节点值都不同。 注意&#xff0c;可能存在多种有效的…

Idea 中 Project Structure简介

在 IntelliJ IDEA 中&#xff0c;Project Structure&#xff08;项目结构&#xff09;对话框是一个非常重要的配置界面&#xff0c;它允许你对项目的各个方面进行详细的设置和管理。下面将详细介绍 Project Structure 中各个主要部分的功能和用途。 1. Project&#xff08;项…

RabbitMQ高级特性----生产者确认机制

题记&#xff1a;在Java微服务开发中&#xff0c;对于一个功能需要调用另一个服务下的功能才能实现的情况&#xff0c;我们通常会使用异步调用取代同步调用&#xff0c;进而实现增强业务的可拓展性和实现故障隔离以及流量削峰填谷的目的。而消息队列就是异步调用的解决方案之一…

基于大数据的音乐网站数据分析与可视化推荐系统

【大数据】基于大数据的音乐网站数据分析与可视化推荐系统&#xff08;完整系统源码开发笔记详细部署教程&#xff09;✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 本选题旨在设计并实现一款基于大数据技术的音乐网站数据分析与可视化推荐系统&#x…

linux在vim中查找和替换

在Linux中使用Vim编辑器查找文本的方法非常直观和强大。Vim是一个高度可配置的文本编辑器&#xff0c;支持多种查找和替换的命令。下面是一些基本的查找命令&#xff1a; 1. 向前查找 要向前查找文本&#xff0c;可以使用以下命令&#xff1a; /text_to_find 例如&#xff0c…