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;
    }
  • 相关阅读:
    python cook 整理
    Ajax
    跨站请求伪造 CSRF
    tornado web
    python hashable
    扩大了一个逻辑卷,resize2fs 保错:没有这个超级块
    linux重启后进入了救援模式,无法远程登录
    如何安装JDK以及配置win10的环境变量
    输出菱形
    6.28作业(2.使用3种方式求100以内偶数和)
  • 原文地址:https://www.cnblogs.com/Traveller-Leon/p/4972423.html
Copyright © 2011-2022 走看看