例题5-7 UVa136 Ugly Numbers(STL:priority_queue)

原创 2016年08月28日 16:57:00

题意:

看白书

要点:

很简单的priority_queue应用题。之所以写个博客是为了总结一下priority_queue的写法。主要问题是VS中greater不是模板,但OJ中可以AC。

需要特殊排序可以有以下两种写法:

struct node
{
	int x, y;
};
struct cmp
{
	bool operator()(node a, node b)
	{
		return a.x > b.x;//注意这里是优先度的意思,如果想从小到大输出要>
	}
};
priority_queue<node, vector<node>, cmp > p;

或者:

struct node
{
	int x, y;
	friend bool operator<(node a, node b)
	{
		return a.x < b.x;//这里直接重载了<,所以优先度就是从小到大的
	}
};
priority_queue<node> pq;

下面是UVa136的代码:

#include<iostream>
#include<set>
#include<queue>
#include<vector>
using namespace std;
typedef long long LL;
const int coff[3] = { 2,3,5 };

struct cmp//升序排列
{
	bool operator()(LL &a, LL &b)//仿函数
	{
		return a > b;
	}
};

int main()
{
	//priority_queue<LL, vector<LL>, greater<LL> > pq;
	priority_queue<LL, vector<LL>, cmp > pq;//VS2015中greater不行但OJ中可以AC
	set<LL> s;
	pq.push(1);
	s.insert(1);
	for (int i = 1;; i++)
	{
		LL x = pq.top();
		pq.pop();
		if (i == 1500)
		{
			printf("The 1500'th ugly number is %lld.\n", x);
			break;
		}
		else
		{
			for (int i = 0; i < 3; i++)
			{
				LL temp = x*coff[i];
				if (!s.count(temp))
				{
					s.insert(temp);
					pq.push(temp);
				}
			}
		}
	}
	return 0;
}




版权声明:本文为博主原创文章,未经博主允许不得转载。

《算法竞赛入门经典2ndEdition 》例题5-7 丑数(Ugly Numbers, Uva136)

之前做过一道题叫做Humble Numbers, 与此题非常相似,大家可以自行百度一下,感觉比这道题要难很多, Humble Numbers这道题目据说曾经是Google、Hulu的面试题。对于任意...

UVA - 136 Ugly Numbers

Description Ugly numbers are numbers whose only prime factors are 2, 3 or 5. The sequence 1, 2,...

【日常学习】【优先队列】POJ1338 Uva136 - Ugly Numbers题解

昨天夜里学了栈、队列和优先队列,栈还有的地方不大懂,队列基本可以,优先队列很高兴。本想今天上午继续弄这个,但是跟着李晨他们一块听了清华交院罗雨屏老师讲的计算几何= =虽然以我的水平听计算几何有点早,但...
  • ametake
  • ametake
  • 2015年02月12日 10:06
  • 909

UVA 136 & POJ1338 Ugly Numbers

题目链接:POJ UVA题目大意:Ugly numbers are numbers whose only prime factors are 2, 3 or 5. The sequence ...
  • SCaryon
  • SCaryon
  • 2017年08月01日 22:37
  • 130

UVA-LA 3135 2004年北京站C题 STL priority_queue自定义优先顺序优先队列的使用

https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&probl...

uvaoj 136 Ugly Numbers 优先队列使用

uvaoj 136 Ugly Numbers 优先队列使用 丑数是不能被除2,3,5以外的其他素数整除的数,把丑数从小到大排列,1,2,3,4,5,6,8,9,10,12,15.......,求第1...
  • gwq5210
  • gwq5210
  • 2015年01月21日 16:45
  • 428

步步为营(十四)常用数据结构(7)STL-Queue(队列)priority_queue(优先队列)

与栈相对的就是队列了,二者都是容器适配器一级的数据结构。Queue的默认实现也是通过Deque实现的(这丫的通吃啊),也就最大程度保证了效率和空间的平衡。 Queue是 先进先出(FIFO)...

《算法竞赛入门经典2ndEdition 》例题5-6 团体队列(Team Queue, Uva540)

先来说说自己对这道题的领悟。 首先,这题使用STL的思路我通过自己的思考能够想到我觉得后面的实现其实不成问题(个人想了很久才想到这样使用STL,第一开始还以为得直接用list呢),然而过程中还是...

STL中priority_queue

  • 2011年03月07日 12:32
  • 34KB
  • 下载

例题5-2 UVa101 The Blocks Problem(STL:vector)

题意: 看白书 要点: 学了一下vector中的resize()的用法,就是把resize(n),n及以上的都丢掉。这道题的归位的意思是放回对应的第i个堆。 #include #include...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:例题5-7 UVa136 Ugly Numbers(STL:priority_queue)
举报原因:
原因补充:

(最多只允许输入30个字)