`
Midnight0101
  • 浏览: 16749 次
  • 性别: Icon_minigender_1
  • 来自: 天津
最近访客 更多访客>>
社区版块
存档分类
最新评论

POJ3253

阅读更多
poj3253:http://poj.org/problem?id=3253,简单的哈夫曼问题
#include <iostream>
#include <fstream>
#include <queue>
using namespace std;

struct cmp
{
	bool operator() (unsigned int x,unsigned int y)
	{
		return x>y;
	}
};

priority_queue<unsigned int,vector<unsigned int>,cmp> q;
unsigned int ans=0;
unsigned int total=0;

void doit()
{
	unsigned int sum=0;
	
	while(!q.empty())
	{
		sum+=q.top();
		q.pop();
		if(!q.empty())
		{
			sum+=q.top();
			q.pop();
			if(sum!=total)
				q.push(sum);
		}
		ans+=sum;
		sum=0;	
	}
}

int main()
{
	unsigned int n;
//	ifstream cin("1.txt");
	cin>>n;
	if(1==n)
	{
		ans=0;
	}
	else
	{	
		for(unsigned int i=0;i<n;i++)
		{
			unsigned int temp;
			cin>>temp;
			q.push(temp);
			total+=temp;
		}
		doit();
	}
	cout<<ans<<endl;
	
	return 0;
}


注意此题的数值范围,最后结果用unsigned int或long保存,不然会数据会溢出,另外,注意n=1时,花费为0。
这里优先队列的用法,可以设置比较函数,重载()运算符,还有一种用来比较结构体的方法,重载>操作符。
struct node
{
    int x, y;
    friend bool operator < (node a, node b)
    {
        return a.x > b.x; //结构体中,x小的优先级高
    }
};
priority_queue<node>q;//定义方法

2
2
分享到:
评论

相关推荐

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

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

    POJ 3253_AC_266MS_380K

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

    POJ1523 - SPF 测试数据

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

    POJ算法题目分类

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

    poj题目分类

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

    poj训练计划.doc

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

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

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

    POJ题目简单分类(ACM)

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

    acm训练计划(poj的题)

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

    acm poj300题分层训练

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

    acm新手刷题攻略之poj

    - 推荐题目:[poj3253](https://vjudge.net/problem/POJ-3253) - 树状数组(Binary Indexed Tree)常用于区间加、区间查询等问题。 5. **Trie树** - 推荐题目:[poj2513](https://vjudge.net/problem/POJ-2513) ...

    POJ 分类题目

    - poj3253 - **应用场景**:适用于数据压缩、编码问题。 **6. 堆** - **定义**:一种特殊的完全二叉树结构。 - **示例题目**: - poj2442 - **应用场景**:适用于实现优先队列、堆排序等问题。 **7. Trie 树** -...

    强大的POJ分类——各类编程简单题及其算法分类

    5. **哈夫曼树**:用于压缩编码,如POJ3253。 6. **堆**:用于优先队列和部分排序问题。 7. **Trie树**:用于字符串查找和前缀匹配,分为静态建树和动态建树,如POJ2513。 ### 简单搜索 1. **深度优先搜索(DFS)**...

    POJ题目分类

    - **示例题目**: poj3253 - **知识点**: - **并操作**:将两个集合合并成一个集合。 - **查找操作**:查询某个元素所在的集合。 ### 四、字符串 #### 1. 字符串匹配 - **内容**: 包括KMP算法等字符串匹配算法。...

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

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

    ACM常用算法及其相应的练习题.docx

    * 哈夫曼树:poj3253 * 堆 * Trie树:静态建树、动态建树 + poj2513 四、简单搜索 * 深度优先搜索:poj2488, poj3083, poj3009, poj1321, poj2251 * 广度优先搜索:poj3278, poj1426, poj3126, poj3087, poj3414 ...

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

    10. 哈夫曼树(poj3253) 二、图算法 1. 度限制最小生成树和第 K 最短路(poj1639, poj3216, poj2446) 2. 最优比率生成树(poj2728) 3. 最小树形图(poj3164) 4. 次小生成树 5. 无向图、有向图的最小环 三、...

    ACM常用算法及其相应的练习题 (2).docx

    (5) 哈夫曼树:poj3253 (6) 堆 (7) trie树:poj2513 四、简单搜索 本部分涵盖了简单搜索,包括深度优先搜索、广度优先搜索和简单搜索技巧和剪枝。 (1) 深度优先搜索:poj2488, poj3083, poj3009, poj1321, poj...

    ACM算法总结大全——超有用!

    5. 哈夫曼树:用于压缩编码,如poj3253。 6. 堆:优先队列实现,如poj1459。 7. Trie树:用于高效字符串查询,如poj2513。 四、简单搜索 1. 深度优先搜索(DFS):如poj2488、poj3083等。 2. 广度优先搜索(BFS):...

Global site tag (gtag.js) - Google Analytics