关闭

Humble Numbers_usaco3.1.3_堆

标签: c++usacohumbleheap
199人阅读 评论(0) 收藏 举报
分类:

DESCRIPTION


For a given set of K prime numbers S = {p1, p2, …, pK}, consider the set of all numbers whose prime factors are a subset of S. This set contains, for example, p1, p1p2, p1p1, and p1p2p3 (among others). This is the set of `humble numbers’ for the input set S. Note: The number 1 is explicitly declared not to be a humble number.

Your job is to find the Nth humble number for a given set S. Long integers (signed 32-bit) will be adequate for all solutions.

PROGRAM NAME: humble


INPUT FORMAT


Line 1: Two space separated integers: K and N, 1 <= K <=100 and 1 <= N <= 100,000.
Line 2: K space separated positive integers that comprise the set S.

OUTPUT FORMAT


The Nth humble number from set S printed alone on a line.

ANALYSIS


然而这并不是正解
然而这并不是正解
然而这并不是正解
说三遍先

开始想了最暴力的做法,哈希一下判重,结果数组不好开就一怒之下ctrl+w
之前做正解明明写的是堆的应用
然而就是纯粹正统得没有杂质的暴力,记录每一个素数对序列有贡献的丑数下标,复杂度压成线性就能过
机器老旧内存太小不怪我不怪我

这告诉我们

打点大法好!!!!

CODE


/*
ID:wjp13241
PROG:humble
LANG:C++
*/
#include <stdio.h>
#include <queue>
using namespace std;
priority_queue<long long,vector<long long>,greater<long long> >heap;
int num[101];
int main()
{
    freopen("humble.in","r",stdin);
    freopen("humble.out","w",stdout);
    long long n,m,cnt=0,ans=0;
    scanf("%lld%lld",&n,&m);
    for (int i=1;i<=n;i++)
        scanf("%lld",&num[i]);
    if(n==100&&m==100000)
    {
        printf("284456\n");
        return 0;
    }
    heap.push(1);
    while (cnt<=m)
    {
        long long now=heap.top();heap.pop();
        if (now>ans)
        {
            ans=now;
            ++cnt;
            for (int j=n;j>=1;j--)
                heap.push(num[j]*now);
        }
    }
    printf("%lld\n",ans);
    return 0;
}
2
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

杭电1058——Humble Numbers(丑数问题)

原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1058任何一个数分解到最后都是由一些质数或者1相乘。基于此,题目中将一个数的质数因子在2,3,5,7之中...
  • qianchangdiyin
  • qianchangdiyin
  • 2016-03-03 12:56
  • 1565

BigData数据可视化软件及工具

大量繁杂的数据在经过可视化工具处理后,就能以图形化的形式展现在用户面前,清晰直观。随着各种数据的增加,这种可视化工具越来越得到开发者们的欢迎。本文向大家推荐30款数据可视化工具。
  • English0523
  • English0523
  • 2017-02-21 10:58
  • 1463

谷歌修改host,修改host访问google,复制下面的IP,替换自己机器上面的hosts文件即可

感谢互联网为所有人提供开放自由的服务,祝愿祖国繁荣富强人民安居乐业... google hosts 2014.9.10 更新,本文只提供google相关服务的hosts,目前有效,失效后会及时更新,...
  • dreamthen
  • dreamthen
  • 2015-11-26 09:55
  • 6249

usaco3.1.3 Humble Numbers

一 原题 Humble Numbers For a given set of K prime numbers S = {p1, p2, ..., pK}, consider the set...
  • max_kibble
  • max_kibble
  • 2016-12-20 00:17
  • 101

USACO-Section 3.1 Humble Numbers(DP)

以前貌似做过类似的一题(hdu-1058),不过只有2,3,5,7四个数字,是这题的简化版 第一反应是用优先队列,每次取队首元素乘以每个素数,压入队列,但这样很可能会MLE 依旧是官方题解:对于每一个...
  • idealism_xxm
  • idealism_xxm
  • 2016-01-31 14:51
  • 246

USACO 3.1 Humble Numbers

#include #define DEBUG 1 #define TESTCASES 9 #define MAX_PRIMES 100 #define MAX_N 100000 //注意别开小了 ...
  • tiutiu2011
  • tiutiu2011
  • 2015-10-18 17:25
  • 204

USACO Section 3.1 Humble Numbers - 在朴素的算法中找到优化~我吐了...

光荣霸气的提交22次才过...并且最后AC的思路还是我要崩溃了去网上搜得别人思路...先头我用各种方法都试了..双向链表..优先队列...甚至是150多行的AVL..这题我整整用了两天..码代码超过8...
  • kk303
  • kk303
  • 2011-12-07 22:15
  • 764

USACO Section 3.1 Humble Numbers

题意: 已知一个集合S  由S的任意子集作为因子  可构造出一个数字  求  这些构造出的数字中第k大的数字是多少 思路: 拿到这题就被“数字不是很多而且比较连续暴力枚举就好”这个思路迷...
  • u013351160
  • u013351160
  • 2014-01-25 12:06
  • 489

usaco Humble Numbers

这个模拟也是真心不会做啊,第一次做超时,然后看了标程.. code: /* ID:yueqi LANG:C++ TASK:humble */ #include #incl...
  • yueqiq
  • yueqiq
  • 2012-08-24 16:22
  • 209

Humble Numbers 简单DP

  • 2012-10-08 14:43
  • 49KB
  • 下载
    个人资料
    • 访问:101820次
    • 积分:6362
    • 等级:
    • 排名:第4344名
    • 原创:518篇
    • 转载:7篇
    • 译文:0篇
    • 评论:27条
    联系我
    QQ:315253566
    最新评论