zoukankan      html  css  js  c++  java
  • PAT1030.——完美数列

    给定一个正整数数列,和正整数p,设这个数列中的最大值是M,最小值是m,如果M <= m * p,则称这个数列是完美数列。

    现在给定参数p和一些正整数,请你从中选择尽可能多的数构成一个完美数列。

    输入格式:

    输入第一行给出两个正整数N和p,其中N(<= 105)是输入的正整数的个数,p(<= 109)是给定的参数。第二行给出N个正整数,每个数不超过109

    输出格式:

    在一行中输出最多可以选择多少个数可以用它们组成一个完美数列。

    输入样例:

    10 8
    2 3 20 4 5 1 6 7 8 9
    

    输出样例:

    8

    一开始无脑O(n2)的超时,然后优化一下,j不用从i开始,继续从上次的地方开始,因为数组已经排好序了。少用一个变量就正确了,也是没有发现原来错在哪里。
    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #include <cctype>
    #include <cstdlib>
    #include<cmath>
    #include <string>
    #include <map>
    #include <set>
    #include <queue>
    #include <vector>
    #include <stack>
    #include <cctype>
    using namespace std;
    typedef unsigned long long ull;
    #define INF 0xfffffff
    
    
    long long a[100000];
    int main()
    { 
        long long n,x,y,i,j,k;
        memset(a,0,sizeof(a));
        cin>>x>>y;
        for(i=0;i<x;++i)
            cin>>a[i];
        sort(a,a+x);
        k=1;
        j=0;
        for(i=0;i<x;++i)
        {
            while(a[j]<=a[i]*y&&j<x)
            {
                ++j;
            }
            k=max(k,j-i);
        }
        cout<<k<<endl;
        
        return 0;
    }
  • 相关阅读:
    iOS 字典实现原理
    IOS中armv7,armv7s,arm64以及i386和x86_64讲解
    SDWebImage源码解析
    iOS Runtime的消息转发机制
    二叉树的遍历
    LINUX 常用命令 ps 详解
    LINUX 文件权限详解
    LINUX查看内存使用情况 free
    PHP isset() empty() isnull() 的区别
    PHP unset()函数销毁变量 但没有实现释放内存
  • 原文地址:https://www.cnblogs.com/Traveller-Leon/p/4972423.html
Copyright © 2011-2022 走看看