提供一种单调队列做法(非正解)

显然每一个丑数能够由一个质数乘以另一个丑数得到

所以我们开k个单调递增队列,每次从这些队列顶部找到一个最小的元素把他捞出来,然后枚举所有质数,用这个元素乘以质数,放入相应的单调队列里。找到的第n个数就是所求的丑数。由于会有重复,但是取出元素的顺序是单调的,所以开一个last变量判重。

本代码不开O2卡一个点(下载下来跑1200ms),开O2过。(因为我用的STL的队列23333)

#include <bits/stdc++.h>
using namespace std; struct data
{
int x;
queue<int> q;
friend bool operator>(const data &aa, const data &bb);
}t, a[110]; int k, n; bool operator>(const data &aa, const data &bb)
{
return aa.q.front() > bb.q.front();
} int main()
{
scanf("%d%d", &k, &n);
for (int i = 1; i <= k; i++)
{
scanf("%d", &a[i].x);
a[i].q.push(a[i].x);
}
int last = 1;
for (int i = 1; i <= n; i++)
{
int minj = 1;
for (int j = 2; j <= k; j++)
{
if (a[minj] > a[j])
minj = j;
}
int xx = a[minj].q.front();
a[minj].q.pop();
if(last == xx)
{
i--;
continue;
}
for (int j = 1; j <= k; j++)
{
a[j].q.push(a[j].x * xx);
}
last = xx;
if (i == n)
printf("%d\n", xx);
}
return 0;
}

最新文章

  1. 奇异值分解 SVD
  2. 【转】sql to_char 日期转换字符串
  3. Azure 删除VHD时报错:There is currently a lease on the blob and no lease ID was specified in the request
  4. java编程思想-java 异常使用指南
  5. 无插件纯web 3D机房 (第四季:大型园区、地球仪效果和其他扩展应用)
  6. HTML 调用iscroll.js主要事项
  7. 如何构建你自己的Java库【翻译】
  8. 【转】怎样创建一个Xcode插件(Part 2)
  9. BZOJ 1978: [BeiJing2010]取数游戏 game( dp )
  10. 【HTTP 2】HTTP/2 协议概述(HTTP/2 Protocol Overview)
  11. Ajax-javascript
  12. zepto的返回顶部scrollTop的动画解决方法
  13. Cocos2D将v1.0的tileMap游戏转换到v3.4中一例(六)
  14. HTTP协议的六种请求方法
  15. Xamarin 学习笔记 - Page(页面)
  16. ES6类封装判断用户上下左右滑动事件!
  17. 将多窗体应用程序改造为仿Chrome形式的简易方法
  18. 高负载集群实战之lvs负载均衡-技术流ken
  19. python接口自动化测试(二)-requests.get()
  20. CSS----学习2

热门文章

  1. FMX 模态窗体
  2. 计算数组arr中所有元素的和
  3. re.findall(?: ) ?:取消优先获取组的权限
  4. go 语言介绍
  5. C++输出斐波那契数列的几种方法
  6. 关联映射、关联查询【重点掌握一条SQL语句的那种方法】
  7. IO流对文件的读取操作
  8. 杭电acm 1076题
  9. NSClassFromString 实例话静态库中的类
  10. ZROI2018提高day9t1