PAT (Basic Level) Practise (中文)-1030. 完美数列(25)   http://www.patest.cn/contests/pat-b-practise/1030

给定一个正整数数列,和正整数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

题目信息&分析:
1. 一个正整数数列,最大值是M,最小值是m,如果M <= m * p,则称这个数列是完美数列。
2. 给出一组正整数,但是无序。
为了检测M <= m * p,需要得出最大值和最小值;
为了得出最大值和最小值中间存在多少个数据,则需要知道大于等于最小值且小于等于最大值的数据有多少个。为了简化,则需要排序。
3. 10的5次方个数据,数据量大,则必须选择高效的排序算法;数值为(0,10的九次方],最大值太高,则无法使用hash。
4. 求最长的完美数列,而原数列已经有序。则如同两个人拉个绳子,一个站在某个数据处,另一个走向远方,直到走到不再满足完美数列时,则停止。这个绳子的长度,就是这个完美数列的长度。

输出格式:

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


 #include<stdio.h>

 void QS(long long *num,int low,int high)
{
long long temp=num[low];
int l=low,h=high;
while(l<h)
{
while(num[h]>=temp && h>l)
h--;
if(num[h]<temp)
{
num[l]=num[h];
num[h]=temp;
l++;
} while(num[l]<=temp && l<h)
l++;
if(num[l]>temp)
{
num[h]=num[l];
num[l]=temp;
h-- ;
}
}
if(l->low) QS(num,low,l-);
if(h+<high)QS(num,h+,high); return;
} int main()
{
int n=;
long long p=;
scanf("%d%lld",&n,&p); long long num[]={};
for(int i=;i<n;i++)
scanf("%lld",&num[i]); if(n==)
{
if(num[]<=num[]*p)
printf("");
else
printf("");
return ;
} QS(num,,n-);
int diff=,min=,max=;
while(n-min>=diff)
{
while(num[max]<=num[min]*p )
{
max++;
if(max==n) break;
}
if(max-min>diff)
diff=max-min;
if(max==n) break;
if(min<n-) min++;
}
printf("%d",diff);
return ;
}

PAT (Basic Level) Practise (中文)-1030. 完美数列(25)的更多相关文章

  1. PAT (Basic Level) Practise:1030. 完美数列

    [题目链接] 给定一个正整数数列,和正整数p,设这个数列中的最大值是M,最小值是m,如果M <= m * p,则称这个数列是完美数列. 现在给定参数p和一些正整数,请你从中选择尽可能多的数构成一 ...

  2. PAT (Basic Level) Practise (中文)-1038. 统计同成绩学生(20)

    PAT (Basic Level) Practise (中文)-1038. 统计同成绩学生(20)    http://www.patest.cn/contests/pat-b-practise/10 ...

  3. PAT (Basic Level) Practise (中文)-1039. 到底买不买(20)

    PAT (Basic Level) Practise (中文)-1039. 到底买不买(20) http://www.patest.cn/contests/pat-b-practise/1039 小红 ...

  4. PAT (Basic Level) Practise (中文)- 1022. D进制的A+B (20)

    PAT (Basic Level) Practise (中文)-  1022. D进制的A+B (20)  http://www.patest.cn/contests/pat-b-practise/1 ...

  5. PAT (Basic Level) Practise (中文)- 1024. 科学计数法 (20)

    PAT (Basic Level) Practise (中文)- 1024. 科学计数法 (20) http://www.patest.cn/contests/pat-b-practise/1024 ...

  6. PAT (Basic Level) Practise (中文)-1025. 反转链表 (25)

    PAT (Basic Level) Practise (中文)-1025. 反转链表 (25)   http://www.patest.cn/contests/pat-b-practise/1025 ...

  7. PAT (Basic Level) Practise (中文)- 1026. 程序运行时间(15)

    PAT (Basic Level) Practise (中文)- 1026. 程序运行时间(15)    http://www.patest.cn/contests/pat-b-practise/10 ...

  8. PAT (Basic Level) Practise (中文)-1027. 打印沙漏(20)

    PAT (Basic Level) Practise (中文)-1027. 打印沙漏(20)  http://www.patest.cn/contests/pat-b-practise/1027 本题 ...

  9. PAT (Basic Level) Practise (中文)-1028. 人口普查(20)

    PAT (Basic Level) Practise (中文)-1028. 人口普查(20)   http://www.patest.cn/contests/pat-b-practise/1028 某 ...

随机推荐

  1. c# Marshal.PtrToStructure(StructPtr, typeof(T)); 特别注意

    以下异常:Marshal.PtrToStructure(StructPtr, typeof(T)); 原因:  在实际使用中 T 没有一个 parameterless  constructor 于是加 ...

  2. [Swift]堆栈Stack:检索最小元素时间复杂度O(1)

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  3. 原生js回到顶部

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  4. Tomcat 连接池调优

    性能较好的Tomcat 配置文件内容 <Context> <Resource name="jdbc/pgsql" type="javax.sql.Dat ...

  5. perl 打开二进制文件,并拷贝内容

    实现脚本 use strict ; my $fileName = "/Users/chenfool/Desktop/sequoiadb-大数据平台构建.pdf" ; my $out ...

  6. linux 和windows 的定时任务

    linux http://www.cnblogs.com/thinksasa/archive/2013/06/06/3121030.html windows http://www.myhack58.c ...

  7. 百度网盘不限速!VIP视频免费看!这两款插件被无数人安利!

    今天给给位推荐两款,我一直在使用的浏览器插件,简直爆炸!全网VIP视频随意看,所有网页上的视频,你想要的全部都能下载! 这两款插件堪称日常必备插件,只要你使用浏览器,就一定需要下面这些插件功能:快速下 ...

  8. iOS开发 - 多线程实现方案之NSThread篇

    NSThread API //类方法:创建一个线程 + (void)detachNewThreadWithBlock:(void (^)(void))block API_AVAILABLE(macos ...

  9. [題解]luogu_P3205/BZOJ_1996 合唱隊

    前言:基本上發題解的都是抄的題解所以 來源:題解 题目描述 为了在即将到来的晚会上有更好的演出效果,作为AAA合唱队负责人的小A需要将合唱队的人根据他们的身高排出一个队形.假定合唱队一共N个人,第i个 ...

  10. 找回phpstorm删除文件/文件夹(phpstorm删除文件/文件夹的恢复)

    恢复phpstorm删除文件/文件夹 再开发的过程中,不小心删除了一个文件夹,后来百度了一下如何恢复,还好PHPStorm是个十分强大的编辑器,不小心删除了文件还可以恢复.一下是恢复的操作: 打开Vi ...