研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;
}

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

相关推荐
DYS_房东的猫7 分钟前
《 C++ 零基础入门教程》第3章:结构体与类 —— 用面向对象组织代码
开发语言·c++
涛涛北京10 分钟前
【算法比较】
算法
yuniko-n10 分钟前
【牛客面试 TOP 101】链表篇(二)
算法·链表·职场和发展
少许极端11 分钟前
算法奇妙屋(二十三)-完全背包问题(动态规划)
java·算法·动态规划·完全背包
郑泰科技13 分钟前
快速地图匹配(FMM)的开源工具与代码示例
c++·windows·python·交通物流
CoderCodingNo13 分钟前
【GESP】C++五级练习(贪心思想考点) luogu-P1115 最大子段和
开发语言·c++·算法
Q741_14713 分钟前
C++ 队列 宽度优先搜索 BFS 力扣 429. N 叉树的层序遍历 每日一题
c++·算法·leetcode·bfs·宽度优先
txinyu的博客16 分钟前
make_shraed & make_unique 替代了new ? 什么场景使用new
开发语言·c++·算法
jinmo_C++16 分钟前
Leetcode矩阵
算法·leetcode·矩阵
要加油哦~17 分钟前
算法 | 整理数据结构 | 算法题中,JS 容器的选择
前端·javascript·算法