`

poj 3253STL建立哈弗曼树

 
阅读更多

题意:给你n块长度已知的木板,已知FJ每次能连接两个木板成为一个新的木板,新的木板长度为两块木板之和。问FJ把n块木板连接起来成最后的一块木板的长度最小是多少?

思路:基础的haffman树。用优先队列去做,要记住haffman几段关键的代码。

还是stl写的猛!!!
这个题目倒不是很难(毕竟有discuss,呵呵),就看成赫夫曼树,然后求所有非叶子节点的总和就行了。不过看算法导论上将建立赫夫曼树要用到优先级队列,这个我还真懒的写,呵呵,所以就现学的优先队列。

代码如下:

#include <iostream>
#include <queue>
using namespace std;
struct node
{
	__int64 w;
	bool operator<(const node &a)const
	{
		return w>a.w;
	}
}tmp;

int main()
{
	int n;
	cin>>n;
	priority_queue<node> que;
	for (int i=0;i<n;i++)
	{
		scanf("%d",&tmp.w);
		que.push(tmp);
	}
	__int64 ans=0;
	while (que.size()>1)
	{
		int a,b;
		a=que.top().w;
		que.pop();
		b=que.top().w;
		que.pop();
		tmp.w=a+b;
		que.push(tmp);
		ans+=tmp.w;
	}
	printf("%I64d\n",ans);
	return 0;
	
}

 

分享到:
评论

相关推荐

    POJ3253-POJ3253-Fence Repair【STL优先队列】

    标题“POJ3253-POJ3253-Fence Repair【STL优先队列】”指的是一个在线编程竞赛题目,源自北京大学的在线判题系统POJ(Problem Online Judge)。该题目要求参赛者使用C++编程语言解决特定的问题,并且在解决方案中...

    POJ 1751 求最小生成树prim算法(JAVA)

    标题 "POJ 1751 求最小生成树Prim算法(JAVA)" 提到的是一个编程挑战,涉及图论中的经典算法——Prim算法。在计算机科学中,Prim算法是用于寻找加权无向图的最小生成树的一种有效方法。最小生成树是一棵树形结构,...

    POJ 3253_AC_266MS_380K

    这道题目在于应用哈夫曼算法 其中涉及的排序算法可以直接调用库函数中的

    POJ1523 - SPF 测试数据

    【标题】"POJ1523 - SPF 测试数据"是源于 Greater New York 2000 年编程竞赛中的问题H,这个题目在ACM(国际大学生程序设计竞赛)领域内颇具代表性。SPF全称为Shortest Path First,通常指的是寻找图中最短路径的一...

    poj题目分类

    * 哈夫曼树:例如 poj3253。 * 堆:例如 poj2513。 * trie 树:例如 poj2513。 4. 简单搜索: * 深度优先搜索:例如 poj2488、poj3083、poj3009、poj1321、poj2251。 * 广度优先搜索:例如 poj3278、poj1426、...

    poj1251 最小生成树

    标题“poj1251 最小生成树”是一个编程竞赛题目,来源于著名的在线编程平台POJ(Programming Online Judge)。这个题目主要涉及图论中的一个经典算法问题——最小生成树(Minimum Spanning Tree, MST)。在图论中,...

    acm poj300题分层训练

    poj1035、poj3080等训练了串的操作,poj2388、poj2299等则涉及排序问题,poj2524、poj1611等是并查集的实例,poj3349、poj3274等展示了哈希表和二分查找,poj3253是哈夫曼树的题目,poj2442和poj1442则关于堆。...

    poj训练计划.doc

    - 堆:如二叉堆,用于实现优先队列,如`poj3253`。 - 树:如二叉树和AVL树,用于存储和检索有序数据,如`poj2513`。 - **简单搜索** - 深度优先搜索:如`poj2488, poj3083`。 - 广度优先搜索:如`poj3278, poj...

    POJ算法题目分类

    * 哈夫曼树:哈夫曼树是指解决问题的哈夫曼树算法,如 poj3253。 * 堆:堆是指解决问题的堆算法。 * trie 树:trie 树是指解决问题的 trie 树算法,如 poj2513。 四、简单搜索 简单搜索是指解决问题的简单搜索...

    poj2775.rar_poj_poj 27_poj27_poj2775

    标签"poj poj_27 poj27 poj2775"进一步确认了这是一道关于POJ平台的编程挑战,其中"poj_27"可能是表示第27类问题或者某种分类,而"poj27"可能是对"poj2775"的简写。 压缩文件中的"www.pudn.com.txt"可能是一个链接...

    ACM-POJ 算法训练指南

    1. **C++标准模板库**:如STL的使用技巧(poj3096, poj3007)。 2. **自定义数据结构**:创建和使用自定义的数据结构和算法(poj3393, poj1472, poj3371, poj1027, poj2706)。 ### 十一、进阶图论 1. **图的高级...

    acm训练计划(poj的题)

    - (poj3253):探讨如何高效地进行元素插入、删除及查找等操作。 5. **区间数据结构**: - (poj2488, poj3083, poj3009, poj1321, poj2251):区间树、线段树等数据结构,用于处理区间查询问题。 6. **字典树...

    字典树练习 POJ 1056

    标题中的“字典树练习 POJ 1056”是指一个编程问题,源自编程竞赛网站POJ(Programming Online Judge)的题目1056。POJ是一个在线平台,程序员可以在这里提交代码并测试其正确性,以解决给定的问题。这类问题通常...

    POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类

    - **例题**:poj3253 - **解释**:队列和栈是两种常见的线性数据结构,用于存储和管理数据元素。 #### 5. Trie树 - **例题**:poj2513 - **解释**:Trie树(字典树)是一种用于存储和检索字符串的高效数据结构。 #...

    线段树练习POJ 3264

    构造阶段则是通过一系列的合并操作,自底向上建立线段树的非叶节点。线段树的每个节点保存的信息可能包括区间最小值、最大值、区间和等,具体取决于实际问题的需求。 对于区间查询,线段树通过从根节点开始,根据...

    POJ2777 个人代码

    POJ题解 个人写法 线段树每个人都不一样

    POJ题目简单分类(ACM)

    - **哈夫曼树**:压缩编码,如poj3253。 - **堆**:如优先队列,用于实现最大值或最小值的快速访问。 - **trie树**:用于高效字符串查询,包括静态和动态构建。 4. **搜索算法**: - **深度优先搜索**:如poj...

    ACMer需要掌握的算法讲解 (2).docx

    * 哈夫曼树:POJ3253 * 背包问题:POJ1837、POJ1276 * DP算法:POJ3267、POJ1836、POJ1260、POJ2533 二、图算法 * 度限制最小生成树和第K最短路:POJ1639、POJ3216、POJ2446 * 最优比率生成树:POJ2728 * 最小树形...

    POJ.rar_poj java_poj1048

    【标题】"POJ.rar_poj java_poj1048" 涉及的知识点主要围绕编程竞赛中的“约瑟夫环”问题,这里是一个加强版,使用Java语言进行解决。 【描述】"POJ1048,加强版的约瑟夫问题 难度中等" 提示我们,这个问题是编程...

    POJ 部分题解 解题报告

    10. **POJ 2528 线段树.txt**:这是第三个线段树相关的题目,解题报告可能会深入讲解线段树在不同场景下的应用。 通过阅读这些解题报告,你可以学习到各种高级算法的应用,如动态规划、搜索算法、数据结构(如线段...

Global site tag (gtag.js) - Google Analytics