zoukankan      html  css  js  c++  java
  • USACO 3.1 Humble Numbers

    Humble Numbers

    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.

    SAMPLE INPUT (file humble.in)

    4 19
    2 3 5 7
    

    OUTPUT FORMAT

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

    SAMPLE OUTPUT (file humble.out)

    27
    

     ————————————————————

    所以就是一道set的简单应用

    然而我的内存在最后一个测试点炸了

    事实上操作内存不需要n*k然后第n次的begin,只要不断维护这个序列是n长最后把--end抛出去

    然后就没有内存问题了,还会比较快

     1 /*
     2 ID: ivorysi
     3 PROG: humble
     4 LANG: C++
     5 */
     6 #include <iostream>
     7 #include <cstdio>
     8 #include <cstring>
     9 #include <algorithm>
    10 #include <queue>
    11 #include <set>
    12 #define siji(i,x,y) for(int i=(x);i<=(y);++i)
    13 #define gongzi(j,x,y) for(int j=(x);j>=(y);--j)
    14 #define xiaosiji(i,x,y) for(int i=(x);i<(y);++i)
    15 #define sigongzi(j,x,y) for(int j=(x);j>(y);--j)
    16 #define inf 0x7fffffff
    17 #define MAXN 100005
    18 #define ivorysi
    19 using namespace std;
    20 typedef long long ll;
    21 set<int> s;
    22 int n,k,pri[105];
    23 void solve() {
    24     scanf("%d%d",&k,&n);
    25     siji(i,1,k) {scanf("%d",&pri[i]);s.insert(pri[i]);}
    26     siji(i,1,k){
    27         set<int>::iterator k=s.begin();
    28         while(1) {
    29             int tm=(*k)*pri[i];
    30             if(tm<0) break;
    31             if(s.size()>n) {
    32                 s.erase(--s.end());
    33                 if(tm>(*--s.end())) 
    34                     break;
    35             }
    36             s.insert(tm);
    37             ++k;
    38         }
    39     }
    40     printf("%d
    ",*(--s.end()));
    41 }
    42 int main(int argc, char const *argv[])
    43 {
    44 #ifdef ivorysi
    45     freopen("humble.in","r",stdin);
    46     freopen("humble.out","w",stdout);
    47 #else
    48     freopen("f1.in","r",stdin);
    49 #endif
    50     solve();
    51 }
  • 相关阅读:
    mysql 模糊查询LIKE 在tp中使用
    json字符串与 js对象互相转换
    1431. Kids With the Greatest Number of Candies
    1481. Least Number of Unique Integers after K Removals
    560. Subarray Sum Equals K
    1476. Subrectangle Queries
    1475. Final Prices With a Special Discount in a Shop
    网速和流量有什么关系
    计算网速的计算公式是什么
    php file_put_contents 函数的使用
  • 原文地址:https://www.cnblogs.com/ivorysi/p/6106455.html
Copyright © 2011-2022 走看看