• Humble Numbers USCAO chapter 3.1


     ...目测我自己写坑定超时,就去NOCOW看了下,题解,官方是每个质数与已有的humble想乘取大于最大humble的最小数即是新的最大humble,

    然后我就写了个个,开始嫌麻烦用set存,超时的飞起。然后全部改成数组,结果case 6还是超时,想了半天感觉和别人的题解也没啥差别,为什么运行时间差这么多

    后来试着把69行的循环初始条件改成i=0,改成i=1,瞬间过了....后来一想确实i=0 没用啊,而且case 6求第100000个,白白循环100000次....

     1 /*
     2 
     3 ID: hubiao cave
     4 
     5 PROG: humble
     6 
     7 LANG: C++
     8 
     9 */
    10 
    11 
    12 
    13 
    14 #include<iostream>
    15 
    16 #include<fstream>
    17 #include<algorithm>
    18 #include<set>
    19 #include<cstring>
    20 
    21 using namespace std;
    22 
    23 
    24 
    25 
    26 int main()
    27 
    28 {
    29 
    30     ifstream fin("humble.in");
    31     ofstream fout("humble.out");
    32     int prim[102];
    33     int humble[100002];
    34     
    35     int more[102];
    36 
    37     memset(humble,0,100002*4);
    38     memset(prim,0,102*4);
    39 
    40 
    41     int lastInd[102];
    42     for(int i=0;i<102;i++)
    43         lastInd[i]=0;
    44     
    45     int cnt,number,temp;
    46     int hlen=0;
    47     fin>>cnt>>number;
    48     for(int i=0;i<cnt;++i)
    49     {
    50         fin>>temp;
    51         prim[i]=temp;
    52     }
    53     prim[cnt]=1;
    54     sort(prim,prim+cnt+1);
    55     humble[0]=1;
    56     hlen++;
    57 
    58 
    59 
    60     while(hlen<=number)
    61     {
    62 
    63         int lasthumber=humble[hlen-1];
    64         int cnt1=0;    
    65         int* pmin=0;
    66         int mcnt=0;
    67 
    68 
    69         for(int i=1;i<=cnt;i++)
    70         {
    71 
    72             for(int j=lastInd[cnt1];j<hlen;j++)
    73             {
    74                 if(prim[i]*humble[j]>lasthumber)
    75                 {
    76                     more[mcnt++]=prim[i]*humble[j];
    77                     lastInd[cnt1]=j;
    78                     break;
    79                 }
    80                 
    81             }
    82                 cnt1++;
    83         }
    84 
    85         pmin=min_element(more,more+mcnt);
    86         humble[hlen++]=*pmin;    
    87 
    88     }
    89 
    90     fout<<humble[hlen-1]<<endl;
    91 
    92     return 0;
    93 
    94 
    95 }
  • 相关阅读:
    WMI系统管理工具介绍和获取机器码
    QListWidget高性能加载图片数据
    2.5偏差方差分解
    QT图片旋转动画
    Qt实现数字滚动动画效果
    Qt动画使用总结
    线性回归--经验最小化,结构最小化,最大似然估计,最大后验估计
    获取国家2019年最新的省、市、区/县、街道、小区/居委会信息 包括港澳台
    .net 利用Emit将object转为DbParameter,DataTable转为List<>
    c#简单操作MongoDB_2.4
  • 原文地址:https://www.cnblogs.com/cavehubiao/p/3337832.html
Copyright © 2020-2023  润新知