PAT (Basic Level) Practise (中文)-1030. 完美数列(25)
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)的更多相关文章
- PAT (Basic Level) Practise:1030. 完美数列
[题目链接] 给定一个正整数数列,和正整数p,设这个数列中的最大值是M,最小值是m,如果M <= m * p,则称这个数列是完美数列. 现在给定参数p和一些正整数,请你从中选择尽可能多的数构成一 ...
- PAT (Basic Level) Practise (中文)-1038. 统计同成绩学生(20)
PAT (Basic Level) Practise (中文)-1038. 统计同成绩学生(20) http://www.patest.cn/contests/pat-b-practise/10 ...
- PAT (Basic Level) Practise (中文)-1039. 到底买不买(20)
PAT (Basic Level) Practise (中文)-1039. 到底买不买(20) http://www.patest.cn/contests/pat-b-practise/1039 小红 ...
- 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 ...
- PAT (Basic Level) Practise (中文)- 1024. 科学计数法 (20)
PAT (Basic Level) Practise (中文)- 1024. 科学计数法 (20) http://www.patest.cn/contests/pat-b-practise/1024 ...
- PAT (Basic Level) Practise (中文)-1025. 反转链表 (25)
PAT (Basic Level) Practise (中文)-1025. 反转链表 (25) http://www.patest.cn/contests/pat-b-practise/1025 ...
- PAT (Basic Level) Practise (中文)- 1026. 程序运行时间(15)
PAT (Basic Level) Practise (中文)- 1026. 程序运行时间(15) http://www.patest.cn/contests/pat-b-practise/10 ...
- PAT (Basic Level) Practise (中文)-1027. 打印沙漏(20)
PAT (Basic Level) Practise (中文)-1027. 打印沙漏(20) http://www.patest.cn/contests/pat-b-practise/1027 本题 ...
- PAT (Basic Level) Practise (中文)-1028. 人口普查(20)
PAT (Basic Level) Practise (中文)-1028. 人口普查(20) http://www.patest.cn/contests/pat-b-practise/1028 某 ...
随机推荐
- tinyxml一些应注意的问题
今天在对使用tinyxml库的程序调试的时候,出现的一些问题让人很纠结,特记以此... 在对TixmlDocument创建时我是用new创建的,然后在用完之后我用delete释放掉,可是用gdb调试 ...
- unity3d easytouch教程
http://www.taikr.com/group/6/thread/1987 说一说easytouch的简单使用方法,和移动平台上的rpg游戏一样,我们肯定也不陌生,我们经常玩游戏的时候用的都是虚 ...
- JPA-day03 自动建表和注解
- 利用Common-Fileupload上传文件图片
一,介绍 common-fileupload是appache的开源组件,基于该组件可以轻松实现文件上传的功能,strust框架的文件上传功能也是基于该组件. 二,使用 1,导入两个jar包:commo ...
- 在SpringBoot中用SpringAOP实现日志记录功能
背景: 我需要在一个SpringBoot的项目中的每个controller加入一个日志记录,记录关于请求的一些信息. 代码类似于: logger.info(request.getRequestUrl( ...
- jQuery scrollLeft()与scrollTop() 源码解读
这里的实现也很容易懂,通过jQuery的静态方法each给jQuery的原型添加scrollLeft和scrollTop方法. 这里在取值时它把window和普通的element做了区分 如果是win ...
- CocoaPods 提交自己的库
今想把自己写的一个view提交到CocoaPods时候,突然发现pull request被拒了,原来从去年开始就改用trunk了... 网上那些folk 在提交的pull request的教程都不可用 ...
- Chess 模拟
链接:http://acm.hdu.edu.cn/showproblem.php?pid=6114 Problem Description 車是中国象棋中的一种棋子,它能攻击同一行或同一列中没有其他棋 ...
- asp.net,监听输入框值的即时变化onpropertychange、oninput
作者:自由天堂发布站点:WEB六零零 网页设计制作原文地址:http://www.web600.net/html/editor/JavaScript/201001131529.html 要达到的效果 ...
- jvm内存溢出的三种情况以及解决办法
1 前言相信有一定java开发经验的人或多或少都会遇到OutOfMemoryError的问题,这个问题曾困扰了我很长时间,随着解决各类问题经验的积累以及对问题根源的探索,终于有了一个比较深 ...