码迷,mamicode.com
首页 > 其他好文 > 详细

UVa 136 Ugly Numbers【优先队列】

时间:2015-02-21 15:27:05      阅读:141      评论:0      收藏:0      [点我收藏+]

标签:

题意:给出丑数的定义,不能被除2,3,5以外的素数整除的的数称为丑数。

和杭电的那一题丑数一样--这里学的紫书上的用优先队列来做。

用已知的丑数去生成新的丑数,利用优先队列的能够每次取出当前最小的丑数再去生成新的丑数====

大概这儿的优先队列就充当了dp转移方程里面的那个min的意思@_@

技术分享
 1 #include<iostream>  
 2 #include<cstdio>  
 3 #include<cstring>  
 4 #include<algorithm> 
 5 #include<queue>
 6 #include<set>
 7 #include<vector> 
 8 using namespace std;
 9 
10 typedef long long LL;
11 priority_queue<LL,vector<LL>,greater<LL> >pq;
12 set<LL>s;
13 
14 int dir[3]={2,3,5};
15 
16 int main()
17 {
18     LL x;
19     pq.push(1);
20     s.insert(1);
21     for(int i=1;i<=1500;i++)
22     {
23         x=pq.top();pq.pop();//将x的值取出,并将其从当前队列中删除 ,以免下次从优先队列中取最小的数时又把它取出来 
24         if(i==1500)
25         cout<< "The 1500‘th ugly number is " <<x<< ".\n";
26         for(int j=0;j<3;j++)
27         {
28           LL xx=x*dir[j];
29           if(!s.count(xx))  {pq.push(xx);s.insert(xx);}//s.cout(xx)判断xx是否已经存在 
30         }
31     }
32     return 0;
33 }
View Code

 

UVa 136 Ugly Numbers【优先队列】

标签:

原文地址:http://www.cnblogs.com/wuyuewoniu/p/4297015.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!