研0 冲刺算法竞赛 day27 P1090 [NOIP2004 提高组] 合并果子 / [USACO06NOV] Fence Repair G

P1090 [NOIP2004 提高组] 合并果子 / [USACO06NOV] Fence Repair G - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

考点:哈夫曼树

思路:建优先队列,自动排序,然后每次取出最小两个即可。本来思路是数组的,但是一直写不对,可能是情况想少了

代码:

复制代码
#include<iostream>
#include<algorithm>
#include<queue>
using namespace std;

priority_queue<int, vector<int>, greater<int>> q;//优先队列

int n, x, ans;

int main()
{
	cin >> n;
	for (int i = 0; i < n; ++i)
	{
		cin >> x;
		q.push(x);//插入x
	}
	while (q.size() >= 2) {//只剩一个结束
		int a = q.top(); q.pop();
		int b = q.top(); q.pop();//弹出最小的两个
		ans += a + b;
		q.push(a + b);
	}
	cout << ans << endl;
	return 0;
}

总结:优先队列,作为最小堆使用

相关推荐
我可以将你更新哟17 小时前
在Ubuntu 22.04上安装C++编译工具
linux·c++·ubuntu
Skrrapper17 小时前
TCPTP协议是什么?以及Socket使用指南
网络·c++·websocket·计算机网络
爱编程的小吴17 小时前
【力扣练习题】热题100道【哈希】189. 轮转数组
算法·leetcode·哈希算法
咔咔咔的17 小时前
840. 矩阵中的幻方
c++
wjykp17 小时前
105~108SVMf
算法
星火开发设计17 小时前
栈的深度解析与C++实现
开发语言·数据结构·c++·学习·知识
再睡一夏就好17 小时前
LInux线程池实战:单例模式设计与多线程安全解析
linux·运维·服务器·开发语言·javascript·c++·ecmascript
我家大宝最可爱17 小时前
windows搭建agent环境
c++·chatgpt
leoufung17 小时前
LeetCode 322. Coin Change:从错误思路到正确一维 DP
算法·leetcode·职场和发展
旧梦吟17 小时前
脚本网页 双子星棋
算法·flask·游戏引擎·css3·html5