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 基础 字符串拼接 + if while for循环
    JTable 的使用方法
    java与数据库连接的几个步骤
    socket通信 _ 一个简单的群聊系统
    基本的文件读写
    多线程之碰撞小球
    java类的继承
    java类和对象
    java中的关键字
    java 线程实现方式
  • 原文地址:https://www.cnblogs.com/Traveller-Leon/p/4972423.html
Copyright © 2011-2022 走看看